我们今天来学习一般嵌入式的必备库,JSON库
1,json和cJSON
那什么是JSON什么是cJSON,他们之间有什么样的关联呢,让我们一起来探究一下吧。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写,也易于机器解析和生成。JSON采用键值对的方式来表示数据,通常用于Web应用程序之间的数据传输。
在 C 语言中,通常需要使用库来解析和生成 JSON 数据。其中,cJSON 是一个在 C 语言中操作 JSON 数据的开源库。它提供了一组函数,可以方便地解析 JSON 字符串、构建 JSON 对象,并进行相应的操作。通过 cJSON 库,C 语言程序可以方便地处理 JSON 数据,用于数据交换和存储等操作。
总结一下:
*JSON 是一种数据交换格式,用于表示结构化数据。
*cJSON 是一个用于在 C 语言中解析和生成 JSON 数据的开源库,使得 C 语言能够方便地处理 JSON 数据。
2,json的语法规则
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有简洁清晰的语法规则。下面是 JSON 的主要语法规则:
1. 数据类型:
- JSON 支持以下数据类型:
- 字符串:使用双引号括起来的文本。
- 数字:整数或浮点数。
- 布尔值:true 或 false。
- 对象:使用花括号 `{}` 表示,由键值对组成。
- 数组:使用方括号 `[]` 表示,由值组成,多个值之间用逗号分隔。
2. 对象:
- JSON 对象是一个无序的键值对集合,键值对之间使用冒号 `:` 分隔,不同键值对之间使用逗号 `,` 分隔,整个对象使用花括号 `{}` 包围。
- 例如:`{"name": "Alice", "age": 30, "isStudent": true}`
3. 数组:
- JSON 数组是一个有序的值的集合,值之间使用逗号 `,` 分隔,整个数组使用方括号 `[]` 包围。
- 例如:`["apple", "banana", "cherry"]`
4. 字符串:
- JSON 字符串是以双引号 `"` 包围的文本序列,可以包含任意字符,包括转义字符(如 ` ` 表示换行)。
- 例如:`"Hello, World!"`
5. 数字:
- JSON 中的数字可以是整数或浮点数,不允许使用十六进制、八进制等表示形式。
- 例如:`42` 或 `3.14159`
6. 布尔值:
- JSON 中的布尔值只有两个取值:true 和 false。
7. 空值:
- JSON 中表示空值的关键字为 null。
总体来说,JSON 的语法简洁明了,易于理解和解析,是在不同系统间进行数据交换的常用格式。
,悟了就好啊。
3,JSON的数据封装
在 JSON 中,数据通常是通过对象(Object)和数组(Array)来进行封装和组织的。
1. 对象(Object):
- JSON 对象是一种无序的键值对集合,使用花括号 `{}` 来表示。
- 每个键值对由一个键(key)和一个值(value)组成,中间使用冒号 `:` 分隔,不同键值对之间使用逗号 `,` 分隔。
2. 数组(Array):
- JSON 数组是一种有序的值的集合,使用方括号 `[]` 来表示。
- 数组中的每个元素可以是字符串、数字、布尔值、对象或者嵌套的数组,元素之间使用逗号 `,` 分隔。
通过对象和数组的嵌套组合,可以实现复杂的数据结构。例如,一个包含多个用户信息的 JSON 数据可以使用对象和数组来进行封装:
这样的数据封装形式使得 JSON 在表示各种数据结构时非常灵活和方便,适用于多种应用场景,如 Web 数据交换、配置文件等。
那在我们cjson中又是如何封装的呢,
也很简单就是创建链表和给链表中添加数据的过程
这时候可能有小伙伴就好奇了cJSON是什么类型,
在 JSON 库中是一个结构体类型。实际上,JSON 库中的 结构体包含了表示 JSON 数据的各种类型(对象、数组、字符串、数字等)的字段和操作这些字段的方法。这个结构体的具体内容和操作系统会给予填充,而我们在使用 cJSON 库时主要关注如何利用这些字段和方法来解析和生成 JSON 数据。
所以不必过于深入探究,只要它是个结构体,里面的内容操作系统会给我们填充

4,输出JSON数据
我们怎么知道自己添加的数据到底是不是我们想要的数据呢,这时候我们就用到了一个函数
5,实例
我们说了这么多,还没有上代码呢,那我们到底是如何通过C语言添加JSON数据,以及输出数据的呢
当然我们要写就必须包含


注意:每个JSON的底层的实现原理都是不同的,大致分为(链表和树形结构)如果有兴趣我后面会专门写一篇博客
6,JSON的解析
我们有了JSON数据,要如何去使用它呢,这时候cJSON就提供了一些解析数据的api(紫色为解析api)
1.创建JSON对象(创建一个空的JSON对象)
2.添加键值对到JSON对象中( 是键, 是值)
3.从字符串中解析JSON数据(JSON 字符串中解析 JSON 数据,并返回对应的 cJSON 对象。)
4.获取JSON对象中的值(从 JSON 对象中获取指定键的值)
5.获取JSON中数组的值(从 JSON 数组中获取指定索引处的元素)
6.获取JSON中字符串的值(从 cJSON 对象中获取字符串值)
7.将JSON数据转换为字符串
8.释放JSON对象
代码实现一下喽!


7,每期一问


是不是很简单呢!
那么这期我们的问题就是:自己找到并加载到自己的项目中(cJSON.c cJSON.h)
我可不是懒哦!!!
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/8237.html