cJSON如何解析json数组?

时间:2016-11-07 07:54:09

标签: c json cjson

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

我从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解析数组呢?

1 个答案:

答案 0 :(得分:2)

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);
}

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