cJSON 如何解析 json 数组?

Hat*_*une 2 c json cjson

我有一个关于 C 解析 json 数组的问题,我知道 cJSON 如何解析 json 使用 C,但是我在 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\"}]
Run Code Online (Sandbox Code Playgroud)

如您所见,数组中有很多 json,那么,如何使用 cJSON lib 解析数组?

Cod*_*odo 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);
}
Run Code Online (Sandbox Code Playgroud)

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