[开发工具] cJSON基本使用方法

[复制链接]
 楼主| dzfansman 发表于 2022-8-25 15:34 | 显示全部楼层 |阅读模式
1、构造json对象;2、向对象中添加元素;3、获取对象中元素;4、获取元素的值;5、json对象与数组互转;6、释放json对象空间;

从官网直接下载cJSON源文件,添加到工程中即可。

char jssd_def[256];

1、构造json对象;

cJSON* root = NULL;

cJSON* item = NULL;

item = cJSON_CreateObject();

root = cJSON_CreateObject();

2、向对象中添加元素;

        1、将对象作为元素进行添加:

cJSON_AddItemToObject(item, "name", cJSON_CreateString("xiaopeng"));

cJSON_AddItemToObject(item,"age",cJSON_CreateNumber(21));

cJSON_AddItemToObject(root,"root",item);

        2、直接添加元素:

        cJSON_AddItemToObject(root,"ID",cJSON_CreateNumber(1));

3、获取对象中元素;

root = cJSON_Parse(jssd_def);
item = cJSON_GetObjectItem(root, "root");

4、获取元素的值;

cJSON* age = NULL;

age = cJSON_GetObjectItem(item, "age");

printf( "age=%d\r\n", age->valueint );

5、json对象与数组互转;

        1、json对象转字符串

sprintf(jssd_def, "%s", cJSON_Print(root));//带格式化\n\t

sprintf(jssd_def, "%s", cJSON_PrintUnformatted(root));//不带格式

        2、字符串转json对象

root = cJSON_Parse(jssd_def);

6、释放json对象空间;

如果使用cJSON_Delete(cJSON *c);进行对象释放:当一个对象是另一个对象的元素时,只调用外层对象释放,否则会出现硬件错误;如果内层对象被释放,再释放外层对象,也会出现硬件错误。如果不放心,则可以直接使用free进行多次释放。

//cJSON_Delete( root );等价于{free( item );free( root );}
//警告:使用cJSON_Delete( root );则不能使用cJSON_Delete( item );
cJSON_Delete( root );


uiint 发表于 2022-9-3 16:50 | 显示全部楼层
使用parseJSON却返回null,这是为什么
pklong 发表于 2022-9-3 17:55 | 显示全部楼层
如何修改 cjson
lihuami 发表于 2022-9-3 20:19 | 显示全部楼层
怎么实现JSON打包UDP
olivem55arlowe 发表于 2022-9-3 21:12 | 显示全部楼层
有哪些 C++ 的 JSON 库比较好
jackcat 发表于 2022-9-3 22:04 | 显示全部楼层
有没有谁在单片机上使用过cJSON库
Bowclad 发表于 2022-9-5 22:19 | 显示全部楼层
没在单片机上用过
onlycook 发表于 2022-9-6 15:34 来自手机 | 显示全部楼层
每天学习点基础知识
AloneKaven 发表于 2022-11-4 21:38 | 显示全部楼层
怎么实现JSON打包UDP?
Undshing 发表于 2023-1-3 16:08 | 显示全部楼层
哪些JSON 库比较好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

2023

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部