Appearance
JSON
1 什么是JSON
JSON 全称 JavaScript Object Notation,即 JavaScript 对象表示法。
- 它是一种轻量级的数据交换格式。
- 设计初衷是让 人类可读,并且 机器易于解析和生成。
- 虽然起源于 JavaScript,但它已经成为跨语言的数据交换标准,几乎所有主流语言都支持 JSON。
简单的说,JSON 就是字符串,但是是遵循指定格式的字符串,主要用来在不同的系统之间做数据交互,例如在前端和后端、不同语言的程序之间(因为是文本,所以传输和处理简单)。
虽然是文本,但是因为遵循特定的格式,所以很容易被解析为对象,然后交由程序进行处理;当然在程序中,程序也很容易将对象转换为 JSON 字符串,然后发送给其他系统。
2 JSON 的基本语法
既然 JSON 是字符串,遵循指定的格式,下面就来介绍 JSON 的格式。
JSON 字符串有 2 种格式:对象格式 和 数组格式。
2.1 对象格式
对象格式:外部用 {} 括起来,其中是属性,属性采用 键值对 (key:value)的方式。
语法:
json
{
key1: value1,
key2: value2,
...
}- 换行符、空格是忽略的,加不加是一样的,所有内容可以写在一行,这里为了可读性,所以进行了格式化。
举个栗子:
以下是一个学生信息信息的 JSON 格式:
json
{
"id": "001",
"name": "zhangsan",
"age": 18
}- 上面学生信息包含:
id、name、age; "001"、"zhangsan"是字符串;age是数字,不用""括起来。
2.2 数组格式
数组格式:外部用 [] 括起来,内部是一个个元素,和数组一样。
语法:
json
[item, item, item, ...]数组中的 item 可以是基本数据类型,也可以是对象类型。
举个栗子:
下面是一个数字列表:
json
[1, 2, 3, 4, 5]下面是一个字符串列表:
json
["apple", "banana", "orange"]下面是一个学生信息的列表
json
[{
"id": "S001",
"name": "zhangsan",
"age": 18
},
{
"id": "S002",
"name": "lisi",
"age": 19
},
{
"id": "S003",
"name": "wangwu",
"age": 17
}
]同一个数组中的元素类型也可以是不同的,有的元素可以是数字,有的可以是字符串或对象。
2.3 格式嵌套
JSON 的对象格式与数组格式 都可以互相嵌套。
也就是说:
- 对象中的某个属性的值,可以是另一个对象或者数组;
- 数组中某个元素,也可以是对象或数组。
这种嵌套是 JSON 表达复杂结构的关键能力,使得 JSON 能够描述任意层次的数据结构。
举个栗子:
下面这个 JSON 表示一个学生对象,其中包含:
- 基本属性:
id、name、age - 一个嵌套的地址对象:
address - 一个成绩列表数组:
scores - 一个课程列表数组,其中每个课程又是一个对象:
courses
json
{
"id": "S001",
"name": "zhangsan",
"age": 18,
"address": {
"city": "Beijing",
"district": "Haidian",
"detail": "XX Road No.88"
},
"scores": [95, 88, 78],
"courses": [
{
"name": "Math",
"credit": 3
},
{
"name": "English",
"credit": 2
}
]
}从上面的例子可以看出:
address属性的值是一个 对象。scores属性的值是一个 数组(元素是数字)。courses属性的值也是一个 数组(元素是对象)。
这就是 JSON 格式的嵌套,如果需要你可以一直嵌套,所以可以使 JSON 可以用于表达真实世界中各种复杂的数据关系。