嵌入式Linux系统JSON格式及开源库cJSON的移植

时间:2024-03-21 12:52:35

1 什么是JSON格式

JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。JSON就是一串字符串,只不过元素会使用特定的符号标注:

{} 双括号表示对象

[] 中括号表示数组

"" 双引号内是属性或值

: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象),比如 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组

当然了,也可以使用{"name":["Michael","Jerry"]}来简化上面内容。

比如:

嵌入式Linux系统JSON格式及开源库cJSON的移植

上图中是带了格式的显示方式,去掉格式部分内容如下:

嵌入式Linux系统JSON格式及开源库cJSON的移植

 2 cJSON库

c语言对JSON数据的组织和解析,推荐使用cJSON库,该开源库采用的是MIT的授权方式,github地址:https://github.com/DaveGamble/cJSON

MIT授权权利和义务如下:

1. 被授权人有权利使用、复制、修改、合并、出版发行、散布、再授权及贩售软件及软件的副本。

2. 被授权人可根据程序的需要修改授权条款为适当的内容。

3. 在软件和软件的所有副本中都必须包含版权声明和许可声明。

我们可以在仓库中直接clone代码下来:

git clone https://github.com/DaveGamble/cJSON.git

嵌入式Linux系统JSON格式及开源库cJSON的移植

下载好的代码放在:…\tutorials\Patchs\3. Json格式及开源库cJson的移植

 3 cJSON库裁剪

下载到的库我们原封不动,把几个文件copy到我们自己的工程中即可:

嵌入式Linux系统JSON格式及开源库cJSON的移植

cJSON.h,cJSON.c,cJSON_Utils.h,cJSON_Utils.c

工程路径:…\tutorials\Patchs\3. Json格式及开源库cJson的移植\project

嵌入式Linux系统JSON格式及开源库cJSON的移植

其中build.c是创建JSON数据的实例,parser.c是解析JSON的例子。

 创建JSON实例

嵌入式Linux系统JSON格式及开源库cJSON的移植

上图包括了怎么创建object,object怎么添加数字,字符串,数组,以及object,还有如何释放内存,编译运行:

嵌入式Linux系统JSON格式及开源库cJSON的移植

5 解析JSON实例

嵌入式Linux系统JSON格式及开源库cJSON的移植

这个代码解析的是 4.4 的例子,涉及把字符串转JSON的对象,从对象中取字符串,数值,数组还有其它对象;从数组中取JSON对象,编译运行:

嵌入式Linux系统JSON格式及开源库cJSON的移植

输出内容可以带格式也可以不带格式。

==================================================================================================================================

如果觉得对您有帮助并想进一步深入学习交流可以扫描以下微信二维码或加入QQ群:928840648

欢迎共同学习成长,有一群爱学习的小伙伴一起勉励!!一起加油!!也可点击

嵌入式Linux系统JSON格式及开源库cJSON的移植

 

笔者基于嵌入式系统框架内容如下整理编辑:

嵌入式Linux系统JSON格式及开源库cJSON的移植