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() 判断项是否为字符串类型
相关推荐
前端不太难2 小时前
从 Navigation State 反推架构腐化
前端·架构·react
jimy13 小时前
安卓里运行Linux
linux·运维·服务器
前端程序猿之路3 小时前
Next.js 入门指南 - 从 Vue 角度的理解
前端·vue.js·语言模型·ai编程·入门·next.js·deepseek
大布布将军3 小时前
⚡️ 深入数据之海:SQL 基础与 ORM 的应用
前端·数据库·经验分享·sql·程序人生·面试·改行学it
醒过来摸鱼3 小时前
Java classloader
java·开发语言·python
superman超哥3 小时前
仓颉语言中元组的使用:深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
小鸡吃米…3 小时前
Python - 继承
开发语言·python
川贝枇杷膏cbppg3 小时前
Redis 的 RDB 持久化
前端·redis·bootstrap
陌颜39113 小时前
JSON在线工具:从数据混沌到清晰洞察的智能助手
json
D_C_tyu4 小时前
Vue3 + Element Plus | el-table 表格获取排序后的数据
javascript·vue.js·elementui