char GSM_JsonPage_Send(char *cmd,cJSON *cmd_params)
{
cJSON *root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "id", cmd); //加入键值,加字符串
cJSON_AddStringToObject(root, "version", "1.0"); //加入键值,加字符串
cJSON_AddItemToObject(root, "params", cmd_params); //为对象添加项目
char *s=cJSON_PrintUnformatted(root);
HAL_UART_Transmit_DMA(&GPRS_HPLC_HUART, (uint8_t *)s,strlen(s));
Host_print((uint8_t *)s,strlen(s));
cJSON_Delete(root);
cJSON_free(s);
return 1;
}
1.使用创建多个cJSON项目,使用cJSON_Delete释放内存时,只释放主项目即可,子项目会在cJSON_Delete函数中自动释放。
2.调用cJSON格式化函数(如:cJSON_PrintUnformatted,cJSON_Print),必须在cJSON_Delete后调用cJSON_free释放格式化的缓冲区。
实际应用参考以上代码。STM32工程cJSON只使用了cJSON.c和cJSON.h文件,未对文件及有关默认内存配置进行修改。