一、解析
- OS:FreeRTOS & 平台:STM32 MCU
void analyze_cJSON_Object(char *text)
{
char *out;cJSON *json,*son;
char *temp;
int grandson;
json=cJSON_Parse(text);
if (!json) {printf("Error before: [%s]\n",cJSON_GetErrorPtr());}
else
{
out=cJSON_Print(json);
temp = cJSON_GetObjectItem(json,"father")->valuestring;
HAL_UART_Transmit(&huart1,(uint8_t *)temp,sizeof(temp),1000);
son = cJSON_GetArrayItem(json,2);
grandson = cJSON_GetArrayItem(son,1)->valueint;
HAL_UART_Transmit(&huart1,(uint8_t *)grandson,sizeof(grandson),1000);
cJSON_Delete(json);
free(json);
}
}
二、构造
- OS:FreeRTOS & 平台:STM32 MCU
对于想构造一个多层嵌套的json对象,可以采用如下办法:

int num=0;
void create_cJSON_Object()
{
char *out;
cJSON *root = cJSON_CreateObject();
cJSON *subnode1 = cJSON_CreateObject();
cJSON *subnode2 = cJSON_CreateObject();
cJSON *item2 = cJSON_CreateObject();
cJSON_AddItemToObject(root,"father",cJSON_CreateNumber(123));
cJSON_AddItemToObject(root,"father1",cJSON_CreateString("XXXX"));
cJSON_AddItemToObject(root,"father2",subnode1);
cJSON_AddItemToObject(subnode1,"son",cJSON_CreateString("XXXX"));
cJSON_AddItemToObject(subnode1,"son1",item2);
cJSON_AddItemToObject(item2,"grandson1",cJSON_CreateNumber(123));
cJSON_AddItemToObject(root,"father3",subnode2);
cJSON_AddItemToObject(subnode2,"son1",cJSON_CreateString("X425X"));
out=cJSON_Print(root);
cJSON_Delete(root);
num = strlen(out);
HAL_UART_Transmit(&huart1,(uint8_t *)out,num,1000);
free(root);
}