C语言解析json数组,怎么解析这个json字符串中的数组最好用cjson

{"msg":"caozuochenggong","data":"[{\"picurl\":\"http://baidu\",\"name\":\"zhangshan\"},{\"picurl\":\"http://baidu\",\"name\":\"zhangshan\"}]","success":1}   

data对应的数据,这个数组,数组长度不确定被弄成了字符串,该怎么 获取数组长度,和每个数据对应的值


#include <stdio.h>
#include <cJSON.h>
int main(){
char* json_string =\ 
//用char* 模拟一个JSON字符串
“{”,\
 "test_1":"1",\
 "test_2":"2",\
 "test_arr":"[{",\
"{",\
  "test_1":"arr_1",\
  "test_2":"arr_2",\
  "test_3":"arr_3",\
"}",\
"{"\
 "test_1":"1",\
 "test_2":"2",\
 "test_3":"3",\
"}",\
"}]",\
"test_3" :"3",\
"}"//json_arr string;
 
//第一步打包JSON字符串
cJSON* cjson = cJSON_Parse(json_arr_string);
 
//判断是否打包成功
if(cjson == NULL){
printf("cjson error…")
}
else{//打包成功调用cJSON_Print打印输出
cJSON_Print(cjson);
}
 
//获取数组对象
cJSON* test_arr = cJSON_GetObjectltem(cjson,"test_arr");
 
//获取数组对象个数便于循环
int arr_size = cJSON_GetArraySize(test_arr);//return arr_size 2
 
//获取test_arr数组对象孩子节点
cJSON* arr_item = test_arr->child;//子对象
 
//循环获取数组下每个字段的值并使用cJSON_Print打印
for(int i = 0;i <=(arr_size-1)/*0*/;++i){
cJSON_Print(cJSON_GetObjectItem(arr_item,"test_1"));
cJSON_Print(cJSON_GetObjectItem(arr_item,"test_2"));
cJSON_Print(cJSON_GetObjectItem(arr_item,"test_3"));
arr_item = arr_item->next;//下一个子对象
}
 
//delete cjson 这里只需要释放cjson即可,因为其它的都指向它
cJSON_Delete(cjson);

 

你是用什么语言?

python的

import json
jsondata = {"msg":"caozuochenggong","data":"[{\"picurl\":\"http://baidu\",\"name\":\"zhangshan\"},{\"picurl\":\"http://baidu\",\"name\":\"zhangshan\"}]","success":1}

data = json.loads(jsondata['data'])
for v in data:
    print(v['picurl'])
    print(v['name'])

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

cJSON_GetArrayItem

 

参考:

https://www.cnblogs.com/yueers/p/7454199.html