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() 判断项是否为字符串类型
相关推荐
谢小飞4 分钟前
一款解压的3D方块加载动画效果
前端·three.js
时序数据说6 分钟前
时序数据库的功能与应用价值
大数据·数据库·物联网·时序数据库
阿虎儿10 分钟前
Modern Node.js Patterns for 2025(2025 年现代 Node.js 模式)
javascript·node.js
飘飘燃雪10 分钟前
在 Linux 系统上安装 Docker 的步骤如下(以 Ubuntu/Debian为例)
linux·ubuntu·docker·debian
Waitind_14 分钟前
Python数据分析常规步骤整理
开发语言·python·数据分析
二狗哈18 分钟前
制作一款打飞机游戏87:最后冲刺
java·前端·游戏
JarvanMo23 分钟前
移动开发已死——除非你.......
前端
这里有鱼汤35 分钟前
Python 虚拟环境是什么?它到底是怎么工作的?
后端·python
哈基米喜欢哈哈哈41 分钟前
Linux常用命令(后端开发版)
linux·运维·服务器
掘金安东尼1 小时前
独立开发/自由职业/远程工作:这年头不上班也能过挺好!!
前端·面试·github