cJson系列——常用cJson库函数

cjson相关教程


文章目录

  • cjson相关教程
  • 前言
  • 常见的Cjson函数
    • [1. 创建 JSON 对象](#1. 创建 JSON 对象)
    • [2. 添加数据到 JSON 对象](#2. 添加数据到 JSON 对象)
    • [3. 获取数据](#3. 获取数据)
    • [4. 操作 JSON 对象](#4. 操作 JSON 对象)
    • [5. 解析 JSON](#5. 解析 JSON)
    • [6. 输出 JSON 字符串](#6. 输出 JSON 字符串)
    • [7. 其他功能](#7. 其他功能)
    • [常见的 `cJSON` 函数总结:](#常见的 cJSON 函数总结:)

前言

这里列出常见的Cjson函数


常见的Cjson函数

1. 创建 JSON 对象

  • cJSON *cJSON_CreateObject(void)创建一个新的 JSON 对象(类似于一个字典或哈希表)。

  • cJSON *cJSON_CreateArray(void) 创建一个新的 JSON 数组。

  • cJSON *cJSON_CreateString(const char *string) 创建一个新的 JSON 字符串值。

  • cJSON *cJSON_CreateNumber(double num) 创建一个新的 JSON 数字值。

  • cJSON *cJSON_CreateBool(cJSON_bool boolean) 创建一个新的 JSON 布尔值(truefalse)。

  • cJSON *cJSON_CreateNull(void) 创建一个新的 JSON null 值。

2. 添加数据到 JSON 对象

  • cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item) 将一个 JSON 项(item)添加到 JSON 对象(object)中,并使用 string 作为键。

  • cJSON_AddItemToArray(cJSON *array, cJSON *item) 将一个 JSON 项(item)添加到 JSON 数组(array)中。

  • cJSON_AddStringToObject(cJSON *object, const char *string, const char *value) 向 JSON 对象中添加一个字符串键值对。

  • cJSON_AddNumberToObject(cJSON *object, const char *string, double num) 向 JSON 对象中添加一个数字键值对。

  • cJSON_AddBoolToObject(cJSON *object, const char *string, cJSON_bool b) 向 JSON 对象中添加一个布尔值键值对。

  • cJSON_AddNullToObject(cJSON *object, const char *string) 向 JSON 对象中添加一个 null 键值对。

3. 获取数据

  • cJSON *cJSON_GetObjectItem(cJSON *object, const char *string) 获取 JSON 对象中指定键的值。

  • cJSON *cJSON_GetArrayItem(cJSON *array, int index) 获取 JSON 数组中指定索引位置的元素。

  • char *cJSON_GetStringValue(cJSON *item) 获取 JSON 项的字符串值。

  • double cJSON_GetNumberValue(cJSON *item) 获取 JSON 项的数字值。

  • cJSON_bool cJSON_IsString(cJSON *item) 判断一个 JSON 项是否是字符串。

  • cJSON_bool cJSON_IsNumber(cJSON *item) 判断一个 JSON 项是否是数字。

  • cJSON_bool cJSON_IsBool(cJSON *item) 判断一个 JSON 项是否是布尔值。

  • cJSON_bool cJSON_IsArray(cJSON *item) 判断一个 JSON 项是否是数组。

  • cJSON_bool cJSON_IsObject(cJSON *item) 判断一个 JSON 项是否是对象。

4. 操作 JSON 对象

  • void cJSON_Delete(cJSON *item) 删除一个 JSON 项,释放它占用的内存。

  • char *cJSON_Print(cJSON *item) 将 JSON 对象转换为格式化的 JSON 字符串。

  • char *cJSON_PrintUnformatted(cJSON *item) 将 JSON 对象转换为没有格式的 JSON 字符串(适用于紧凑输出)。

  • cJSON *cJSON_Duplicate(cJSON *item, cJSON_bool recurse) 复制一个 JSON 对象或数组,如果 recursetrue,则递归复制。

  • void cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *item) 替换 JSON 对象中指定键的值。

  • void cJSON_ReplaceItemInArray(cJSON *array, int index, cJSON *item) 替换 JSON 数组中指定索引位置的元素。

  • cJSON *cJSON_RemoveItemFromObject(cJSON *object, const char *string) 从 JSON 对象中删除指定键的值。

  • cJSON *cJSON_RemoveItemFromArray(cJSON *array, int index) 从 JSON 数组中删除指定索引位置的元素。

5. 解析 JSON

  • cJSON *cJSON_Parse(const char *value) 解析一个 JSON 字符串并返回对应的 JSON 对象。如果解析失败,则返回 NULL

  • cJSON *cJSON_ParseWithLength(const char *value, size_t length)cJSON_Parse 相似,但允许你指定解析的字符串长度,适用于处理大字符串的情况。

6. 输出 JSON 字符串

  • char *cJSON_Print(cJSON *item)cJSON 对象转换为字符串,并返回格式化后的 JSON 字符串。

  • char *cJSON_PrintUnformatted(cJSON *item)cJSON 对象转换为字符串,返回一个未格式化的紧凑型 JSON 字符串。

7. 其他功能

  • cJSON *cJSON_CreateIntArray(const int *numbers, size_t count) 根据给定的整数数组创建一个 JSON 数组。

  • cJSON *cJSON_CreateFloatArray(const float *numbers, size_t count) 根据给定的浮点数数组创建一个 JSON 数组。

  • cJSON *cJSON_CreateDoubleArray(const double *numbers, size_t count) 根据给定的双精度数组创建一个 JSON 数组。

常见的 cJSON 函数总结:

函数名 作用
cJSON_CreateObject() 创建一个空的 JSON 对象
cJSON_CreateArray() 创建一个空的 JSON 数组
cJSON_AddStringToObject() 向 JSON 对象中添加字符串类型数据
cJSON_AddNumberToObject() 向 JSON 对象中添加数字类型数据
cJSON_GetObjectItem() 获取 JSON 对象中的某个键值
cJSON_Print() 将 JSON 对象转换为字符串
cJSON_Parse() 解析 JSON 字符串,返回 JSON 对象
cJSON_Delete() 删除 JSON 对象及其包含的所有数据
cJSON_AddItemToObject() 向 JSON 对象添加一个项
cJSON_IsString() 判断项是否为字符串类型
相关推荐
树獭非懒8 小时前
AI大模型小白手册|Embedding 与向量数据库
后端·python·llm
小兵张健8 小时前
价值1000的 AI 工作流:Codex 通用前端协作模式
前端·aigc·ai编程
sunny_8 小时前
面试踩大坑!同一段 Node.js 代码,CJS 和 ESM 的执行顺序居然是反的?!99% 的人都答错了
前端·面试·node.js
拉不动的猪8 小时前
移动端调试工具VConsole初始化时的加载阻塞问题
前端·javascript·微信小程序
ayqy贾杰10 小时前
Agent First Engineering
前端·vue.js·面试
IT_陈寒10 小时前
SpringBoot实战:5个让你的API性能翻倍的隐藏技巧
前端·人工智能·后端
iceiceiceice11 小时前
iOS PDF阅读器段评实现:如何从 PDFSelection 精准还原一个自然段
前端·人工智能·ios
大金乄11 小时前
封装一个vue2的elementUI 表格组件(包含表格编辑以及多级表头)
前端·javascript
唐叔在学习11 小时前
就算没有服务器,我照样能够同步数据
后端·python·程序员
葡萄城技术团队12 小时前
【性能优化篇】面对万行数据也不卡顿?揭秘协同服务器的“片段机制 (Fragments)”
前端