1.1 JSON 的出现
JSON (JavaScript Object Notation) 是一种用于交换数据的文本格式。它在 2000 年代初期由 Douglas Crockford 设计,因其简单易用而变得流行。
JSON 的主要理念是创建一种人类易于阅读的格式,并且易于程序解析和生成。JSON 最初基于 JavaScript 的语法,但其格式如此通用,因此被许多其他编程语言使用并支持。现在 JSON 可以独立于 JavaScript 使用:它成为各种系统和应用程序数据交换的标准,不管它们是用什么编程语言编写的。
JSON 实际上是用 JavaScript 语言记录对象状态的方式。几乎是这样。这就是为什么对那些为前端编写 API 的人来说,JSON 特别受欢迎。此外,JSON 被广泛用于存储配置文件和日志。
JSON 的主要特点
易读性:
JSON 格式易于人类阅读和理解。这使得它在配置文件中使用,以及在客户端和服务器之间交换数据时非常方便。
语言无关性:
虽然 JSON 最初基于 JavaScript 的语法,但它可以用于任何编程语言。许多编程语言都提供了内置的库来处理 JSON。
解析简单:
解析(来自英文 "parsing")是分析数据结构的过程,通常是文本或代码,用于提取有用信息。在编程中,解析经常用于处理文本数据。 JSON 可以在客户端和服务器端轻松地解析和生成。现在,每种编程语言都有一个库,可以轻松地将对象转换为 JSON 和反向转换。
标准化和明显的领导者:
10 年前,JSON 与 XML 竞争成为 API 的标准。现在 JSON 胜出,成为明显的领导者。在你的后端 API 中,你可以只支持 JSON,这就足够了,即使你的 API 是给其他服务器调用的。
1.2 JSON 的结构
JSON 是成对的 "键-值" 结构,其语法由两个主要结构组成:
对象:对象是不按顺序的 "键-值" 对集合。键是字符串,值可以是 JSON 支持的任何数据类型。
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science"],
"address": {
"city": "New York",
"zipCode": "10001"
}
}
数组/列表:数组是值的有序集合(类似于 Python 中的列表)。值可以是 JSON 支持的任何数据类型。
["Apple", "Banana", "Cherry", 100, 3.14, true]
很像 Python 对象,不是吗?
这就是 JSON 实际上是用 JavaScript 记录数据的标准,而 JavaScript 在当时受到了 Python 的启发。所以你会喜欢使用 JSON。
1.3 JSON 的数据类型
JSON 支持以下数据类型:
字符串:用双引号表示。
"name": "John"
数字:可以是整数或浮点数。
"age": 30
对象:无序的 "键-值" 对集合。
"address": {
"city": "New York",
"zipCode": "10001"
}
数组/列表:有序的值集合。
"courses": ["Math", "Science"]
布尔值: true 或 false。
"isStudent": false
与 Python 不同,true 和 false 用小写字母写。
null:表示空值。
"middleName": null
日期和时间:以字符串形式传递。
{
"datetime": "2023-05-15T14:30:00Z",
"date": "2023-05-15",
"time": "14:30:00"
}
以前它们有时会以 UNIX 时间戳的格式表示为数字,但这种方法已经被淘汰了。
GO TO FULL VERSION