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() 判断项是否为字符串类型
相关推荐
mCell5 小时前
GSAP ScrollTrigger 详解
前端·javascript·动效
gnip5 小时前
Node.js 子进程:child_process
前端·javascript
databook6 小时前
Manim实现脉冲闪烁特效
后端·python·动效
程序设计实验室7 小时前
2025年了,在 Django 之外,Python Web 框架还能怎么选?
python
excel8 小时前
为什么在 Three.js 中平面能产生“起伏效果”?
前端
倔强青铜三8 小时前
苦练Python第46天:文件写入与上下文管理器
人工智能·python·面试
excel9 小时前
Node.js 断言与测试框架示例对比
前端
天蓝色的鱼鱼10 小时前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping10 小时前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
石金龙11 小时前
[译] Composition in CSS
前端·css