cJSON:解析与构造

一、解析
  • 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);
	  
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值