cJSON解析数组嵌套

算是实现了,肯定有更好的方法,有大佬,欢迎探讨_
#json实体如下

{
	"service":[
		{
			"data1":[1,2,3];
			"data1":[1,2,3];
		}
		{
			"data1":[7,8,9];
			"data1":[1,2,3];
		}
		{
			"data1":[11,22,33];
			"data1":[1,2,3];
		}
	]
}

#代码如下

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"

#define RR_SIZE_MAX   3
#define ARR_MAX   3

char *string=
"{								\
    \"service\":\
    [\
        {\
            \"data1\":[1,2,3],\
            \"data2\":[4,5,6]\
        },\
        {\
            \"data1\":[7,8,9],\
            \"data2\":[1,2,3]\
        },\
        {\
            \"data1\":[11,22,33],\
            \"data2\":[1,2,3]\
        }\
    ]\
}";

char *perss_str = "{\"service\":[{\"data1\":[1,2,3],\"data2\":[4,5,6]},{\"data1\":[2,2,3],\"data2\":[3,2,3]},{\"data1\":[7,2,3],\"data2\":[9,2,3]}]}";

char prase_json_code(void)
{
	int i = 0;
	int j = 0;
	cJSON *parameter_element = NULL;
	cJSON *service_val = NULL;
	cJSON *data[3] = {NULL};
	cJSON *data_val1 = NULL;
	cJSON *data_val2 = NULL;
	cJSON *act_data1[3] = {0};
	cJSON *act_data2[3] = {0};
	
	parameter_element = cJSON_Parse(string);
	if(parameter_element == NULL){
		printf("prase fail\n");
		return -1;
	}
	
	service_val = cJSON_GetObjectItem(parameter_element, "service");
	printf("service:[\n");
	printf("    {\n");
	for(i = 0;i< RR_SIZE_MAX;i++){
		data[i] = cJSON_GetArrayItem(service_val, i);
		data_val1 = cJSON_GetObjectItem(data[i], "data1");
		for(j = 0;j< ARR_MAX;j++){
			act_data1[j] = cJSON_GetArrayItem(data_val1, j);
			printf("act_data1[%d]:%d\n",j,act_data1[j]->valueint);
		}
		data_val2 = cJSON_GetObjectItem(data[i], "data2");
		for(j = 0;j< ARR_MAX;j++){
			act_data2[j] = cJSON_GetArrayItem(data_val2, j);
			printf("act_data2[%d]:%d\n",j,act_data2[j]->valueint);
		}
	}
	
}

#编译结果
编译结果如上图

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值