JSON 是什么?Web 数据格式入门指南
2026-09-03
每次应用加载、表单提交、页面弹出聊天消息,背后几乎都有 JSON 在流动。它是 Web 的默认数据格式,一旦你能读懂它,关于 API 和配置文件的大量谜团就会消失。
这篇指南解释 JSON 是什么、定义它的那套简单规则,以及如何像专家一样用格式化工具来校验、美化并压缩它。
JSON 是什么
JSON 代表 JavaScript Object Notation。它是一种数据文本格式,于 21 世纪初标准化,如今几乎每种语言和平台都在使用。
关键点在于 JSON 只是文本:一个你可以复制、粘进文件、发邮件或通过网络传输的字符串。它不携带任何程序逻辑——只有数据。这就是它如此可移植的原因。PHP 服务器产生的 JSON 文档,可被 JavaScript 前端读取,存进 Python 数据库,全程无需任何翻译。
JSON 的六种类型
一个 JSON 文档只用六种构建块构成:
- 对象——
{ "name": "Alice", "age": 30 }——花括号里无序的键:值对。 - 数组——
["a", "b", "c"]——方括号里有序的值列表。 - 字符串——
"hello"——双引号里的文本。 - 数字——
42、3.14——整数或小数,不加引号。 - 布尔值——
true或false。 - 空值——
null——表示「无」。
对象和数组是容器;其余四个是叶子。任何值都可以放进对象或数组,由此构建出嵌套结构,比如一个包含用户列表、而每个用户又有地址对象的 API 响应。
JSON 为何取代了 XML
在 JSON 之前,常见的结构化数据格式是 XML。XML 强大但冗长:每份数据都需要开标签和闭标签。一个在 JSON 里是 "age": 30 的值,会变成好几行 <age>30</age>。
JSON 用远为紧凑的语法取代了它,而且还有另一项超能力:它几乎一一对应 JavaScript 原生使用的对象和数组。JavaScript 开发者能直接读懂 JSON 并立刻看到数据结构,无需任何转换。这种简洁加熟悉感的组合,正是 JSON 成为标准的原因。
格式化、校验与压缩 JSON
因为 JSON 可以写成一整行的长串,往往很难读。三种操作可以改善:
- 格式化(美化) 加入缩进和换行,让嵌套一目了然。如果一个 payload 深达七层,光靠格式化就能读懂。
- 校验检查文本是否格式良好。最常见的错误是尾随逗号,或缺少结束花括号——这类错误浏览器在某些地方会静默接受,但在别处会让你代码崩溃。
- 压缩去除所有多余空白,生成生产环境中最小的 payload。这是通过网络传输 JSON 时想要的。
好的格式化工具在一个界面里就提供这三者。它应该告诉你错误在哪,免得你在一面括号墙里找。
文档通过校验之后,接下来的问题是如何描述它的形状——那是 JSON Schema 的职责——以及它还可能以哪些方式出错,清单见常见 JSON 错误。
哪些地方容易出错
JSON 的严格程度比 JavaScript 高,而这些严格规则正是 bug 的常见来源:
- 只能用双引号。
{ name: "Alice" }无效,必须是{ "name": "Alice" }。JavaScript 允许单引号和裸键,JSON 不允许。 - 不能有尾随逗号。
[1, 2, 3,]在 JSON 中无效。 - 数字不加引号,字符串必须加。
30是数字,"30"是字符串。 - 没有注释。 你不能在 JSON 文档里写
//或/* */。
如果 JSON 校验一直失败,先检查这四点。
快速参考
- JSON 是纯文本数据——一串没有程序逻辑、可移植的字符串,任何语言都能读。
- 六大积木:对象、数组、字符串、数字、布尔、null。对象和数组是容器,其余四种是叶子。
- JSON 在 JavaScript 宽松之处很严格:只能用双引号、不能有尾随逗号、数字不加引号、字符串必加、没有注释。
- 格式化加结构、校验抓格式错误、压缩产出生产环境最小的 payload。
- JSON 之所以胜过 XML,是因为它紧凑,且几乎一对一地映射到 JavaScript 的对象和数组。
开始使用
如果你正看着某个 API 交出的一大坨 JSON,JSON 格式化工具是最快的理顺方式:粘进去、校验、格式化,再复制一份干净的版本。而如果某个 payload 看起来是一串乱码 Base64,可以先用 Base64 编解码器把它解码回可读的 JSON。