当今互联网时代,JSON 已经成为了各种应用程序之间数据交换和通信的主流格式。JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式,它易于阅读和编写,并且易于机器解析和生成,在 Web 开发中用于数据的格式化和传输。
JSON 由两种数据结构组成:对象和数组。
对象(object)是由键值对组成的无序集合,键是字符串,值可以是任何类型,包括对象和数组。对象由一对花括号{ }包围,键和值之间用冒号:分隔。键值对之间用逗号,分隔。
举个例子:
- {
- "list" : [
- {
- "name": "Apifox",
- "ID": 2,
- "city": "Guangzhou"
- }
- ]
- }
-
在这个例子中,对象的键是"name"、"ID"和"city",对应的值是字符串、数字和字符串。
数组(array)是值(value)的有序集合,每个值可以是任何类型,包括对象和数组。数组由一对方括号[ ]包裹,值之间用逗号,分隔。
举个例子:
- [ "apple", "banana", "orange"]
-
在这个例子中,数组包含三个字符串元素:"apple"、"banana"和"orange"。
值(value)可以是花括号{ }括起来的字符串(String)、数值(Number)、布尔值(true/false)、 null、对象(Object)或者数组(Array),这些结构可以嵌套。
JSON 字符串是由双引号" "包围的 Unicode 字符序列,使用反斜杠 `` 转义。
举个例子:
- {
- "name": "Apifox",
- "city": "Guangzhou"
- }
-
在这个例子中,字符串"name"和"city"是由双引号" "包围的。
JSON 数字可以是整数或浮点数。
举个例子:
- {
- "age": 30,
- "weight": 65.5
- }
-
在这个例子中,数字"30"和"65.5"分别是整数和浮点数,不需要双引号" "包围。
JSON 布尔值只有两个取值:true 和 false。
举个例子:
- {
- "isStudent": true,
- "isEmployed": false
- }
-
在这个例子中,布尔值"isStudent"的取值为true,布尔值"isEmployed"的取值为false,不需要双引号" "包围。
JSON 的 null 表示一个空值。
举个例子:
- {
- "middleName": null
- }
-
在这个例子中,"middleName"的值为null,不需要双引号" "包围。
- {
- "id": 101,
- "name": "Jane Doe",
- "is_active": true,
- "roles": ["admin", "editor"],
- "contact": {
- "email": "jane.doe@example.com",
- "phone": "123-456-7890"
- },
- "preferences": {
- "notifications": {
- "email": true,
- "sms": false
- }
- }
- }
- [
- {
- "name": "Alice",
- "age": 28,
- "skills": ["JavaScript", "Python"]
- },
- {
- "name": "Bob",
- "age": 34,
- "skills": ["Java", "C++"]
- }
- ]
JSON 和 XML都是常用的数据交换格式。它们之间有什么区别呢?
举个例子,下面是一个 XML 文档:
- <book>
- <title>Harry Potter</title>
- <author>J.K. Rowling</author>
- <year>2005</year>
- </book>
-
相应的 JSON 文档如下所示:
- {
- "title": "Harry Potter",
- "author": "J.K. Rowling",
- "year": 2005
- }
-
可以看到,JSON 比 XML 更加简洁,没有了冗余的标签和属性。