十三. JSON数据格式 DRAFT
JSON 简介
JSON,全称为JavaScript Object Notation,是一种轻量级的数据交换格式,常用于Web应用程序中传输数据。
JSON格式的数据可以表示为一个由键值对组成的集合,可以嵌套表示复杂的数据结构,例如数组和对象。JSON数据通常被封装在HTTP请求和响应中,在客户端和服务器之间进行数据交换,也可以作为纯数据格式存储在文件或数据库中。
JSON数据的特点包括:
- 简洁:JSON数据采用文本格式,相对于XML等格式来说更加简洁易读。
- 易于解析:JSON格式可以使用JavaScript中的JSON.parse()方法进行解析,解析后可以方便地使用JavaScript对象操作数据。
- 可读性好:JSON格式采用文本格式表示数据,可以使用常规的文本编辑器直接查看和修改数据。
JSON数据由键值对组成,例如:
{
"name": "张三",
"age": 18,
"hobbies": ["音乐", "读书", "旅游"],
"address": {
"province": "浙江省",
"city": "杭州市",
"district": "西湖区"
}
}
这是一个包含了姓名、年龄、爱好和住址信息的JSON数据,其中"name"、“age"等为键,“张三”、18等为对应的值。“hobbies"和"address"的值分别为包含字符串的数组和表示嵌套对象的另一个JSON数据。
JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。JSON由于比XML更小、更快,更易解析,以及浏览器的内建快速解析支持,使得其更适用于网络数据传输领域。
记得前面我们的数据用空格隔开序列化成文本文件了吗? 那样的格式, 是我们自己规定的, JSON是由标准组织规定的各个语言大多都支持
JSON的两种结构:
JSON数据可以表示为两种结构:对象(Object)和数组(Array)。
- 对象(Object)结构
对象结构是一种键值对的集合,每个键值对之间使用冒号(:)分隔,多个键值对之间使用逗号(,)分隔,整个对象使用花括号({})包裹。例如:
{
"name": "Jack",
"age": 20,
"gender": "male"
}
上面的JSON数据表示一个人的信息,包括姓名、年龄和性别。其中,每个键值对之间使用冒号(:)分隔,多个键值对之间使用逗号(,)分隔,整个对象使用花括号({})包裹。
- 数组(Array)结构
数组结构是一组值的集合,每个值之间使用逗号(,)分隔,整个数组使用中括号([])包裹。例如:
["Jack", 20, "male"]
上面的JSON数据表示一个人的信息,使用数组结构表示,分别以字符串、数字和字符串的形式表示姓名、年龄和性别。每个值之间使用逗号(,)分隔,整个数组使用中括号([])包裹。注意,JSON数组中的元素不需要使用键名进行标记,只需要使用键名为数字的键值对进行标记。
JSON的值
JSON的值可以是以下几种类型:
- 字符串(String) 字符串是由一系列Unicode字符组成的序列,使用双引号("")表示。例如:
"hello, world"
- 数字(Number) 数字是一个整数或浮点数,没有特定的最大或最小值,使用数字表示。例如:
42
3.1415926
- 布尔(Boolean) 布尔类型只有两个取值:true和false,分别表示真和假。例如:
true
false
- 空(Null) 空类型表示空值,使用null表示。例如:
null
- 对象(Object) 对象是由一组键值对(键值对中的值也可以是任意类型)组成的无序集合,使用花括号({})表示。键值对之间使用冒号(:)分隔,键值对之间使用逗号(,)分隔。例如:
{
"name": "Jack",
"age": 20,
"gender": "male"
}
- 数组(Array) 数组是由一组值(值可以是任意类型)组成的有序集合,使用中括号([])表示。每个值之间使用逗号(,)分隔。例如:
["Jack", 20, "male"]
这些基本类型可以嵌套使用,表示更加复杂的数据结构。例如,可以使用对象作为数组的元素,也可以使用数组作为对象的属性值。