cJSON函数用法
admin
2024-03-13 20:49:43
0
  1. /* 以字符串形式返回cJSON的版本 /
    CJSON_PUBLIC(const char
    ) cJSON_Version(void);
  2. /* 向cJSON提供malloc, realloc和free函数 /
    CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks
    hooks);
  3. /* 提供一个JSON块,这将返回一个您可以查询的cJSON对象。*/
    CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value,
    size_t buffer_length);

cJSON_Print()函数 和 CJSON_Parse()函数的作用:
前者是 JSON 的数据格式转换为 JSON 字符串,用于 JSON 组装,
后者是 JSON 字符串转换为 JSON 的数据格式,用于 JSON 解析

  1. /* 内存管理:调用者总是负责从所有变量的cJSON_Parse(使用cJSON_Delete)和
    cJSON_Print(使用stdlib freallocated)中释放结果,调用者对缓冲区有完全的责任。*/
    CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);

  2. /* 将cJSON实体呈现为用于传输/存储的文本。 */
    CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item);

  3. /* 将cJSON实体呈现为文本,用于传输/存储,不需要任何格式化。*/
    CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item);

  4. /* 使用缓冲策略将cJSON实体渲染为文本。预缓冲是对最终大小的猜测。
    猜中会减少再分配。Fmt =0表示未格式化,=1表示已格式化 */
    CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item,
    int prebuffer,
    cJSON_bool fmt);

  5. /* 使用内存中已分配的具有给定长度的缓冲区将cJSON实体渲染为文本。
    成功时返回1,失败时返回0。/
    /
    注意:cJSON在估计它将使用多少内存时并不总是100%准确,
    所以为了安全,要比实际需要多分配5个字节 */
    CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item,
    char *buffer,
    const int length,
    const cJSON_bool format);

  6. /* 删除一个cJSON实体和所有子实体。 */
    CJSON_PUBLIC(void) cJSON_Delete(cJSON *item);

  7. /* 返回数组(或对象)中的项数。*/
    CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array);

  8. /* 从数组"array"中检索项目号"index"。如果不成功,返回NULL。*/
    CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index);

  9. /* 检查项目类型并返回其值 */
    CJSON_PUBLIC(char *) cJSON_GetStringValue(const cJSON * const item);
    CJSON_PUBLIC(double) cJSON_GetNumberValue(const cJSON * const item);

  10. /* 这些函数检查项的类型 */
    CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item);
    CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item);

  11. /* 这些调用创建适当类型的cJSON项 */
    CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void);
    CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void);
    CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void);
    CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean);
    CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num);
    CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string);
    CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char raw); / raw json */
    CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void);
    CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void);

  12. /* 在valuestring引用字符串的地方创建一个字符串,这样它就不会被cJSON_Delete释放 */
    CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string);

  13. /* 创建一个对象/数组,只引用它的元素,这样它们就不会被cJSON_Delete释放 */
    CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child);
    CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child);

  14. /* 这些实用程序创建计数项的数组。参数计数不能大于数字数组中的元素数量,否则数组访问将超出限制。 */
    CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count);
    CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count);
    CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count);
    CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count);

  15. /* 将项附加到指定的数组/对象。 */
    CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item);
    CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object,
    const char *string,
    cJSON *item);

  16. /* 从数组/对象中删除/分离项。 */
    CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item); //via:通过
    CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which);
    CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which);
    CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string);
    CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string);
    CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string);
    CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string);

  17. /* 更新数组项。 */
    CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON newitem); / Shifts pre-existing items to the right. */
    CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement);
    CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);
    CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);
    CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem);

  18. /* 复制一个cJSON项 */
    CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse);

  19. /* 缩小字符串,从字符串中删除空白字符(如’ ‘,’\t’, ‘\r’, ‘\n’)。输入指针json不能指向只读地址区,比如字符串常量,但应该指向可读可写的地址区 */
    CJSON_PUBLIC(void) cJSON_Minify(char *json);

  20. /* 同时向对象中创建和添加项的帮助函数。成功时返回添加的项,失败时返回NULL /
    CJSON_PUBLIC(cJSON
    ) cJSON_AddNullToObject(cJSON * const object, const char * const name);
    CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name);
    CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name);
    CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean);
    CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number);
    CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string);
    CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw);
    CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name);
    CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name);

  21. 编译命令
    gcc *.c cJSON.c -lm

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...