cJSON数组操作函数使用指南
使用 cJSON_GetArraySize 和 cJSON_GetArrayItem 函数
这两个函数是 cJSON 库中用于处理 JSON 数组的函数。下面我将介绍它们的使用方法:
cJSON_GetArraySize
int cJSON_GetArraySize(const cJSON *array);
功能:获取 JSON 数组中的元素数量。
参数:
array
:指向 cJSON 数组对象的指针
返回值:
数组中的元素数量
如果参数不是数组或为 NULL,则返回 0
示例:
cJSON *json_array = cJSON_Parse("[1, 2, 3, 4, 5]");
int size = cJSON_GetArraySize(json_array);
printf("数组大小: %d\n", size); // 输出: 数组大小: 5
cJSON_GetArrayItem
cJSON *cJSON_GetArrayItem(const cJSON *array, int index);
功能:获取 JSON 数组中指定索引位置的元素。
参数:
array
:指向 cJSON 数组对象的指针index
:要获取的元素的索引(从 0 开始)
返回值:
指向数组中指定索引位置的 cJSON 对象的指针
如果索引超出范围或参数不是数组,则返回 NULL
示例:
cJSON *json_array = cJSON_Parse("[{\"name\":\"John\"}, {\"name\":\"Jane\"}]");
cJSON *first_item = cJSON_GetArrayItem(json_array, 0);
cJSON *name = cJSON_GetObjectItem(first_item, "name");
printf("第一个名字: %s\n", name->valuestring); // 输出: 第一个名字: John
综合使用示例
#include <stdio.h>
#include <cjson/cJSON.h>int main() {const char *json_str = "[10, 20, 30, 40, 50]";cJSON *array = cJSON_Parse(json_str);if (array == NULL) {const char *error_ptr = cJSON_GetErrorPtr();if (error_ptr != NULL) {fprintf(stderr, "解析错误: %s\n", error_ptr);}return 1;}int array_size = cJSON_GetArraySize(array);printf("数组包含 %d 个元素:\n", array_size);for (int i = 0; i < array_size; i++) {cJSON *item = cJSON_GetArrayItem(array, i);if (cJSON_IsNumber(item)) {printf(" 元素 %d: %d\n", i, item->valueint);}}cJSON_Delete(array);return 0;
}
输出:
text数组包含 5 个元素:元素 0: 10元素 1: 20元素 2: 30元素 3: 40元素 4: 50
注意事项
使用前确保参数是有效的 cJSON 数组对象
索引从 0 开始,最大有效索引是
cJSON_GetArraySize(array) - 1
使用后记得释放内存(使用
cJSON_Delete
)检查返回值是否为 NULL 以避免空指针异常
对于嵌套数组,可以递归使用这些函数