Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cJSON如何解析json数组?_C_Json_Cjson - Fatal编程技术网

cJSON如何解析json数组?

cJSON如何解析json数组?,c,json,cjson,C,Json,Cjson,我有一个关于C解析json数组的问题,我知道cJSON是如何使用C解析json的,但是我在Google上找不到关于如何解析json数组的任何结果,我已经看过了,但它不适合我 我从web API接收到一个json数组,它如下所示: [{\"id\":\"25139\",\"date\":\"2016-10-27\",\"name\":\"Komfy Switch With Camera DKZ-201S\\/W Password Disclosure\"},{\"id\":\"25117\",\"

我有一个关于C解析json数组的问题,我知道cJSON是如何使用C解析json的,但是我在Google上找不到关于如何解析json数组的任何结果,我已经看过了,但它不适合我

我从web API接收到一个json数组,它如下所示:

[{\"id\":\"25139\",\"date\":\"2016-10-27\",\"name\":\"Komfy Switch With Camera DKZ-201S\\/W Password Disclosure\"},{\"id\":\"25117\",\"date\":\"2016-10-24\",\"name\":\"NETDOIT weak password Vulnerability\"}]

如您所见,数组中有许多json,因此,如何使用cJSON lib解析数组?

cJSON支持全部范围,即json数组和对象。在访问数据时,您只需要了解当前工件的类型

在您的例子中,它是一个数组,包含包含简单值的对象。这就是你如何处理它的:

int i;
cJSON *elem;
cJSON *name;
char *json_string = "[{\"id\":\"25139\",\"date\":\"2016-10-27\",\"name\":\"Komfy Switch With Camera DKZ-201S\\/W Password Disclosure\"},{\"id\":\"25117\",\"date\":\"2016-10-24\",\"name\":\"NETDOIT weak password Vulnerability\"}]";
cJSON *root = cJSON_Parse(my_json_string);
int n = cJSON_GetArraySize(root);
for (i = 0; i < n; i++) {
    elem = cJSON_GetArrayItem(root, i);
    name = cJSON_GetObjectItem(elem, "name");
    printf("%s\n", name->valuestring);
}
inti;
cJSON*elem;
cJSON*姓名;
char*json\u string=“[{\'id\':\'25139\',\'date\':\'2016-10-27\',\'name\':\'Komfy交换机带摄像头DKZ-201S\\/W密码泄露\',{\'id\':'25117\','date\':'2016-10-24\','name\':'NETDOIT弱密码漏洞\'”;
cJSON*root=cJSON\u Parse(我的json\u字符串);
int n=cJSON_GetArraySize(根);
对于(i=0;i值字符串);
}

我还没有编译。希望不会太远。

您的示例不是有效的JSON。基本上,他所有的反斜杠都是无效的。这是从调试器复制的工件吗?调试器显示带有C风格转义的字符串?是的,你是对的,我从gdb复制它,当我使用curl下载数据时,它没有“\”,它是这样的:[{“id”:“6792”,“date”:“2010-01-29”,“name”:“Discuz!6.0.0跨站点脚本”},{“id”:“7570”,“date 2009-09-17”,“name”:“Discuz!插件疯狂之星我希望这可能会对你有所帮助,谢谢你,你的解决方案让我突然开悟,然后立刻明白,非常感谢。”。