目录
什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于将数据结构化地传输和存储。它由键值对组成,采用类似于JavaScript对象的格式来表示数据。JSON易于阅读和编写,并且易于解析和生成,成为广泛应用于Web应用程序和数据交换的标准格式之一。
JSON的基本数据类型
类型 |
解释 |
案例 |
字符 (String) |
由双引号包围的Unicode字符序列 |
|
数字(Number) |
包括整数和浮点数 |
|
布尔值(Boolean) |
表示真或假,C相关的实现库可能会用0和1表示 |
|
空值 (Null) |
表示空值 |
|
对象 (Object) |
由一组无序的键值对组成,键是字符串,值可以是任意的JSON数据类型。键值对之间使用逗号分隔,整个对象使用花括号{}包围 |
|
数组 (Array) |
由一组有序的值组成,值可以是任意的JSON数据类型。值之间使用逗号分隔,整个数组使用方括号[]包围 |
|
JSON的特点和优势(了解)
- 简洁和易读:JSON使用简洁的文本格式表示数据,易于阅读和编写。
- 平台无关性:JSON是一种独立于编程语言和平台的数据格式,可被多种编程语言解析和生成。
- 易于解析和生成:JSON的解析和生成相对简单,各种编程语言都提供了相应的JSON解析器和生成器。
- 支持复杂数据结构:JSON支持嵌套、复杂的数据结构,可以表示对象、数组和各种组合类型的数据。
- 与Web应用程序兼容性良好:JSON广泛用于Web应用程序中,可以轻松地与JavaScript进行交互。
JSON格式规范(重点)
1. 数据使用键值对表示,键和值之间使用冒号(:)分隔。 例如:{"name": "John","age": 30} 2. 键使用双引号(")包围,值可以是字符串、数字、布尔值、对象、数组或null。 例如:{"name": "John","age": 30,"isStudent": true,"address": null} 3. 键值对之间使用逗号(,)分隔,最后一个键值对后不应有逗号。 例如:{"name": "John","age": 30} 4. 字符串值使用双引号(")包围,可以包含任意Unicode字符序列,特殊字符可以使用转义字符表示。 例如:"Hello,World!","I "love" JSON" 5. 数字可以是整数或浮点数,不使用引号包围。 例如:42,3.14 6. 布尔值只有两个取值:true和false,不使用引号包围。 例如:true,false 7. 数组使用方括号([])包围,值之间使用逗号分隔。 例如:[1,5] 8. 对象使用花括号({})包围,键值对之间使用逗号分隔。 例如:{"name": "John","age": 30} 9. JSON是严格区分大小写的,键和字符串值都应该使用双引号包围。 10. JSON可以嵌套,允许在对象中包含对象或数组,或在数组中包含对象或其他数组。 11. JSON不支持注释,不允许在JSON数据中添加注释。
下面是一个简单的JSON
{
"name": "southernbrid","age": 14,"gender": true,"height": 1.65,"grade": null,"skills": [
"JavaScript","Java","Python","Lisp"
]
}
分享个JSON格式校验网站
JSON的基本操作
JSON的基本操作通常涉及以下几个方面:
- 创建JSON对象: 可以使用编程语言提供的函数、类或库来创建JSON对象。通常,这些函数或方法接受键值对作为参数,用于指定JSON对象的属性和对应的值。
- 解析JSON字符串: 将JSON字符串解析为相应的数据结构,如对象、数组或基本数据类型。编程语言提供相应的解析函数或方法,可以将JSON字符串转换为可操作的数据对象。
- 生成JSON字符串: 将数据对象转换为JSON字符串的表示形式,以便于传输、存储或与其他系统进行交互。编程语言提供相应的函数或方法,可以将数据对象转换为符合JSON格式规范的字符串。
- 访问和修改JSON对象的属性: 通过键访问JSON对象的属性,并可以对其进行修改。可以使用编程语言提供的API来访问、读取和修改JSON对象的属性值。
- 遍历JSON数组: 遍历JSON数组中的元素,逐个访问和处理数组中的数据项。使用循环结构来遍历数组,根据索引或迭代器获取数组中的每个元素。
- 嵌套JSON操作: 处理嵌套的JSON结构,包括访问、修改和操作嵌套的对象或数组。可以使用递归、循环等方法来处理嵌套的JSON结构。
- 序列化和反序列化(重点): 将JSON对象序列化为字符串,或将JSON字符串反序列化为对象。序列化是将数据对象转换为JSON字符串,反序列化是将JSON字符串转换为数据对象。(本文主要介绍C语言的JSON库来进行序列化和反序列化)
下面是一个C库,用来完成本文教学