Skip to content

JSON 语法

JSON(JavaScript 对象表示法)语法是一种轻量级的数据存储和传输格式。它易于人类阅读和书写,也易于机器解析和生成。

JSON 语法源自 JavaScript 对象字面量语法,但它有更严格的规则。

  • 数据以名称/值对的形式表示。
  • 数据由逗号 , 分隔。
  • 对象用花括号 {} 包围。
  • 数组用方括号 [] 包围。
  • 名称(键)必须是字符串,用双引号 "" 包围。
  • 值必须是允许的 JSON 数据类型之一。

JSON 数据由名称/值对组成,类似于 JavaScript 对象中的属性或在其他语言中字典/映射(dictionaries/maps)中的键值对。

一个名称/值对由一个字段名称(键)、一个冒号 : 以及一个值组成:

"firstName": "Alice"

重要提示:与 JavaScript 对象字面量(其中键有时可以不加引号)不同,JSON 键始终必须是用双引号 ("") 包围的字符串。

JSON 中的值可以是以下数据类型之一:

  • 一个字符串(用双引号 "" 包围,支持 Unicode 和反斜杠转义,如 \n、\t)。
  • 一个数字(整数或浮点数,与 JavaScript 不同,没有区分。不允许使用八进制和十六进制格式)。
  • 一个对象(用花括号 {} 包围)。
  • 一个数组(用方括号 [] 包围)。
  • 一个布尔值(true 或 false - 小写)。
  • null 值(小写)。

JSON 不支持函数、日期(通常表示为 ISO 8601 格式的字符串)、undefined、注释或尾随逗号。

JSON 对象表示名称/值对的集合。它们以 { 开头,以 } 结尾。每个名称后跟一个 :,名称/值对之间用 , 分隔。

JSON 对象示例:

{
"firstName": "Bob",
"lastName": "Smith",
"age": 30,
"isStudent": false,
"address": {
"street": "123 Main St",
"city": "Anytown"
}
}

JSON 数组表示有序的值列表。它们以 [ 开头,以 ] 结尾。值之间用 , 分隔。

包含字符串的 JSON 数组示例:

["apple", "banana", "cherry"]

数组可以包含不同类型的值,包括其他数组或对象:

{
"department": "Sales",
"employees": [
{
"firstName": "Alice",
"lastName": "Green"
},
{
"firstName": "Bob",
"lastName": "Smith"
},
{
"firstName": "Charlie",
"lastName": "Brown"
}
]
}

在此示例中,与键 "employees" 关联的值是包含三个 JSON 对象的数组。

由于 JSON 的语法是 JavaScript 对象字面量语法的子集,因此在 JavaScript 中处理 JSON 非常简单。

你可以使用 JSON.parse() 轻松地将 JSON 字符串解析为 JavaScript 对象,并使用 JSON.stringify() 将 JavaScript 对象序列化为 JSON 字符串。

请考虑以下 JavaScript 对象:

const employees = [
{
"firstName": "Alice",
"lastName": "Green"
},
{
"firstName": "Bob",
"lastName": "Smith"
}
];

访问数据是标准的 JavaScript 操作:

// 访问第一个员工的名字
console.log(employees[0].firstName); // 输出:Alice
// 使用方括号表示法访问第二个员工的姓氏
console.log(employees[1]["lastName"]); // 输出:Smith

修改数据也是标准的 JavaScript 操作:

employees[0].firstName = "Alicia";
console.log(employees[0].firstName); // 输出:Alicia

接下来的章节将介绍如何在 JSON 文本和 JavaScript 对象之间进行转换,以及如何获取 JSON 数据。

  • JSON 文件的标准文件扩展名是 .json。
  • JSON 文本的官方 MIME(多用途互联网邮件扩展)类型是 application/json。