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() 判断项是否为字符串类型
相关推荐
gwf2161 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
爱吃提升1 小时前
python 分布式爬虫、爬虫合规与综合实战项目
分布式·爬虫·python
审小匠OpenCPAi1 小时前
银行流水核查怎么自动化?单边匹配、双向勾稽与图聚类异常检测的工程对比
java·前端·人工智能·python·审计
撩得Android一次心动1 小时前
Linux编程笔记3【个人用】
linux·笔记
Revolution611 小时前
一个公共表格组件,是怎么一步步失控的
前端·前端工程化
OpenPomeloxCommunity1 小时前
3. Linux 同步机制之 spinlock 设计与实现(一):通用层
linux
mONESY1 小时前
React useState 核心原理与最佳实践:从异步更新到性能优化全解
javascript
腻害兔1 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:CRM 客户关系模块深度解析——从线索到回款,一套完整的 B2B 销售闭环是怎么搭的?
java·前端·javascript·vue.js·产品经理·ai编程
whyfail2 小时前
前端学 Spring Boot(2):一次点击,如何穿过整个后端?
前端·spring boot·后端
念恒123062 小时前
网络基础
linux·网络·c++