HandyTools Hub

← 全部指南

JSON 是什么?Web 数据格式入门指南

2026-09-03

每次应用加载、表单提交、页面弹出聊天消息,背后几乎都有 JSON 在流动。它是 Web 的默认数据格式,一旦你能读懂它,关于 API 和配置文件的大量谜团就会消失。

这篇指南解释 JSON 是什么、定义它的那套简单规则,以及如何像专家一样用格式化工具来校验、美化并压缩它。

JSON 是什么

JSON 代表 JavaScript Object Notation。它是一种数据文本格式,于 21 世纪初标准化,如今几乎每种语言和平台都在使用。

关键点在于 JSON 只是文本:一个你可以复制、粘进文件、发邮件或通过网络传输的字符串。它不携带任何程序逻辑——只有数据。这就是它如此可移植的原因。PHP 服务器产生的 JSON 文档,可被 JavaScript 前端读取,存进 Python 数据库,全程无需任何翻译。

JSON 的六种类型

一个 JSON 文档只用六种构建块构成:

  1. 对象——{ "name": "Alice", "age": 30 }——花括号里无序的 键:值 对。
  2. 数组——["a", "b", "c"]——方括号里有序的值列表。
  3. 字符串——"hello"——双引号里的文本。
  4. 数字——423.14——整数或小数,不加引号。
  5. 布尔值——truefalse
  6. 空值——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。