cjson 遍历
时间: 2023-06-21 08:13:20 浏览: 250
cjson 是一个用于处理 JSON 格式数据的 C 语言库,它提供了一组 API 函数,可以将 JSON 数据解析为 C 语言的数据结构,或者将 C 语言的数据结构转换为 JSON 格式数据。如果你想要遍历 JSON 格式数据,cjson 提供了以下几个 API 函数:
1. `cJSON *cJSON_GetObjectItem(const cJSON *object, const char *string)`:根据键名获取 JSON 对象中的某个元素。
2. `cJSON *cJSON_GetArrayItem(const cJSON *array, int index)`:根据索引获取 JSON 数组中的某个元素。
3. `cJSON *cJSON_GetArrayItemCaseSensitive(const cJSON *array, int index)`:根据索引获取 JSON 数组中的某个元素,区分大小写。
4. `cJSON *cJSON_GetObjectItemCaseSensitive(const cJSON *object, const char *string)`:根据键名获取 JSON 对象中的某个元素,区分大小写。
遍历 JSON 数据的基本思路是,首先获取 JSON 数据的根节点,然后根据节点类型,进一步获取其子节点或者元素。下面是一个示例代码,展示如何遍历 JSON 数据:
```c
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
int main()
{
char *json_str = "{\"name\":\"Alice\",\"age\":20,\"hobbies\":[\"reading\",\"swimming\"]}";
cJSON *root = cJSON_Parse(json_str);
if (root == NULL) {
printf("Error before: [%s]\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *name = cJSON_GetObjectItem(root, "name");
if (name != NULL) {
printf("name: %s\n", name->valuestring);
}
cJSON *age = cJSON_GetObjectItem(root, "age");
if (age != NULL) {
printf("age: %d\n", age->valueint);
}
cJSON *hobbies = cJSON_GetObjectItem(root, "hobbies");
if (hobbies != NULL) {
cJSON *hobby = NULL;
cJSON_ArrayForEach(hobby, hobbies) {
printf("hobby: %s\n", hobby->valuestring);
}
}
cJSON_Delete(root);
return 0;
}
```
输出结果为:
```
name: Alice
age: 20
hobby: reading
hobby: swimming
```
其中,`cJSON_ArrayForEach` 是一个宏定义,用于遍历 JSON 数组中的元素。
阅读全文