由于c语言中,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json。
1.CJSON需要较多的堆栈空间,CJSON官方说:跑完他的test大概需要3k的空间:
所以在,单片机或者资源较少的地方使用CJSON时,注意空间分配
2.注意,每一个CJOSN结构体都是一个比较大的空间,我么使用完之后要及时delete,但是,一旦子对象被添加到父对象之后,删除父对象就会删除子对象,所以一旦我们删除了父对象再删除子对象会出现问题。
3.注意,cJSON_PrintUnformatted这种转换函数,会自动为指针申请空间,我们使用完之后一定要及时释放空间:free。
JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在网络或者程序之间轻松地传递这个字符串,并在需要的时候将它还原为各编程语言所支持的数据格式。
JSON对象是一个无序的"key(关键字)/value(值)"键值对的集合:
以"{“开始,以”}“结束,允许嵌套使用
每个key(关键字)和value(值)成对出现,关键字和值之间使用”:“分隔
键/值对之间用”,"分隔
在这些字符前后允许存在无意义的空白符
其中关键字只能是字符串(使用双引号“”表示),值可以有如下表示:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或 false)
数组 (在中括号中)
对象 (在大括号中)
null
具体显示如下:
cJSON对象的实现采用了树形结构,每个对象是树的一个节点,每个节点由cJSON这个结构体组成,对象中的元素也由cJSON这个结构体组成。同一层的对象和元素是双向链表结构,由next和prev指针链接。不同层的对象或元素由child指针链接起来。type表示对象或元素类型,string表示对象或节点的名称。元素的值存储在valuestring, valueint和valuedouble中,cJSON.h中有详细的注释。
为什么选择使用cJSON来构造和解析JSON字符串?因为它具有超轻便,可移植,单文件的特点,使用MIT开源协议。其中主要包括两个文件cjson.c和cjson.h。
cjson.h文件中包含了对于JSON格式的结构体定义以及一些操作JSON格式的功能函数,包括创建JSON、向JSON格式中添加数字,字符,布尔值等等、读取JSON格式、将JSON格式转化为字符串等。
cjson.c文件中就是功能函数的具体实现。
cJSON源码下载地址:
https://github.com/DaveGamble/cJSON
下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。只需在函数中包含头文件(#include “cJSON.h”),然后和cJSON.c一起编译即可使用。
cJSON库中还有其他函数,我暂时用不到,就不介绍了。
具体示例代码如下:
运行结果如下:
- cJSON库函数介绍
介绍一些解析JSON时,经常用到的函数,使用以下函数,就可以完成大部分JSON格式的解析。
具体代码如下:
- 使用cJSON解析JSON
我们使用cJSON解析JSON的目的就是从中提取出我们想要获取的数据,然后进行分析和处理。
具体示例代码如下:
运行结果如下:
https://blog.csdn.net/jasper_JA/article/details/?ops_request_misc=%257B%2522request%255Fid%2522%253A%%2522%252C%2522scm%2522%253A%3.…%2522%257D&request_id=80&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_click~default-2-.pc_search_result_control_group&utm_term=cjson&spm=1018.2226.3001.4187
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/6995.html