cJSON解析数组嵌套
cJSON
Ultralightweight JSON parser in ANSI C
项目地址:https://gitcode.com/gh_mirrors/cj/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);
}
}
}
#编译结果
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:4 个月前 )
c859b25d
4 个月前
74e1ff49
this fixes CVE-2025-57052 4 个月前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)