算是实现了,肯定有更好的方法,有大佬,欢迎探讨_
#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);
		}
	}
	
}

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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐