2

我有一个关于 C 解析 json 数组的问题,我知道 cJSON 如何使用 C 解析 json,但是我在 Google 中找不到任何关于如何解析 json 数组的结果,我看过Using cJSON to read in a JSON array,但它不适合我。

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

4

1 回答 1

7

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

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

于 2016-11-07T08:46:40.190 回答