当前位置: 首页 > news >正文

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

注意事项

  1. 使用前确保参数是有效的 cJSON 数组对象

  2. 索引从 0 开始,最大有效索引是 cJSON_GetArraySize(array) - 1

  3. 使用后记得释放内存(使用 cJSON_Delete

  4. 检查返回值是否为 NULL 以避免空指针异常

  5. 对于嵌套数组,可以递归使用这些函数

http://www.lryc.cn/news/583391.html

相关文章:

  • AJAX 学习
  • Go语言高级面试必考:切片(slice)你真的掌握了吗?
  • 11.7 ChatGPT奖励模型完全解读:RLHF核心技术深度剖析与Hugging Face实战
  • 从传统到智能:地质灾害风险评估、易发性分析与灾后重建;AI大语言模型DeepSeek、ChatGPT、GIS、Python和机器学习深度融合
  • 李宏毅NLP-9-语音转换
  • 大数据在UI前端的应用深化:用户行为模式的挖掘与预测性分析
  • Java基础--stream的使用
  • 学术绘图(各种神经网络)
  • 数据结构--堆的实现
  • 【04】MFC入门到精通——MFC 自己手动新添加对话框模板 并 创建对话框类
  • 【PDF提取内容改名】批量提取pdf多个指定区域内容到excel表格的操作步骤和方法
  • 专题:2025母婴行业洞察报告|附60+份报告PDF汇总下载
  • Context Engineering:从Prompt Engineering到上下文工程的演进
  • React、Vue、Angular的性能优化与源码解析概述
  • 深度学习 必然用到的 微积分知识
  • RAG实战之dify源码文件解析-pdf文件解析流程
  • 【Oracle报错】[INS-13001] 环境不满足最低要求。
  • 什么是幂等
  • 【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
  • 第四节 chatPDF
  • 神经网络基础及API使用详解
  • 机器学习(西瓜书) 第四章 决策树
  • 通用游戏前端架构设计思考
  • 自动化测试报告优化:jenkins+jmeter定制化HTML报告生成
  • skywalking-agent-docker镜像
  • 方差、协方差和协方差矩阵
  • Windows 10/11新系统跳过强制联网激活和注册微软账户
  • JavaScript数组键值去重方法
  • 【C++】容器适配器 + stack/queue/deque详解
  • EFK9.0.3 windows搭建