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)。

  1. 对象(Object)结构

对象结构是一种键值对的集合,每个键值对之间使用冒号(:)分隔,多个键值对之间使用逗号(,)分隔,整个对象使用花括号({})包裹。例如:

{
  "name": "Jack",
  "age": 20,
  "gender": "male"
}

上面的JSON数据表示一个人的信息,包括姓名、年龄和性别。其中,每个键值对之间使用冒号(:)分隔,多个键值对之间使用逗号(,)分隔,整个对象使用花括号({})包裹。

  1. 数组(Array)结构

数组结构是一组值的集合,每个值之间使用逗号(,)分隔,整个数组使用中括号([])包裹。例如:

["Jack", 20, "male"]

上面的JSON数据表示一个人的信息,使用数组结构表示,分别以字符串、数字和字符串的形式表示姓名、年龄和性别。每个值之间使用逗号(,)分隔,整个数组使用中括号([])包裹。注意,JSON数组中的元素不需要使用键名进行标记,只需要使用键名为数字的键值对进行标记。

JSON的值

JSON的值可以是以下几种类型:

  1. 字符串(String) 字符串是由一系列Unicode字符组成的序列,使用双引号("")表示。例如:
"hello, world"
  1. 数字(Number) 数字是一个整数或浮点数,没有特定的最大或最小值,使用数字表示。例如:
42
3.1415926
  1. 布尔(Boolean) 布尔类型只有两个取值:true和false,分别表示真和假。例如:
true
false
  1. 空(Null) 空类型表示空值,使用null表示。例如:
null
  1. 对象(Object) 对象是由一组键值对(键值对中的值也可以是任意类型)组成的无序集合,使用花括号({})表示。键值对之间使用冒号(:)分隔,键值对之间使用逗号(,)分隔。例如:
{
  "name": "Jack",
  "age": 20,
  "gender": "male"
}
  1. 数组(Array) 数组是由一组值(值可以是任意类型)组成的有序集合,使用中括号([])表示。每个值之间使用逗号(,)分隔。例如:
["Jack", 20, "male"]

这些基本类型可以嵌套使用,表示更加复杂的数据结构。例如,可以使用对象作为数组的元素,也可以使用数组作为对象的属性值。