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