📝 博客 · 2026-07-29 · ⏱ 7 分钟

JSON格式化是什么?为什么需要它?

零基础看懂 JSON 是什么、它的语法规则、为什么需要格式化,以及和 XML 的对比。

一、JSON 是什么

如果你接触过任何一种现代 Web 开发,几乎一定见过下面这种东西:

{
  "name": "张三",
  "age": 28,
  "isVip": true,
  "hobbies": ["读书", "游泳", "写代码"],
  "address": {
    "city": "北京",
    "zip": "100000"
  }
}

这就是 JSON(JavaScript Object Notation,JavaScript 对象表示法)。简单说,它是一种用文本表示结构化数据的格式。无论是浏览器和服务器之间传数据,还是配置文件、日志、API 接口,JSON 几乎无处不在。

需要特别说明的一点是:虽然名字里带有 "JavaScript",但 JSON 只是一种数据格式,和编程语言无关。Python、Java、Go、PHP、Rust……几乎所有语言都内置了 JSON 的解析和生成工具。

二、JSON 的历史

JSON 的发明人是美国程序员 Douglas Crockford。2001 年前后,他在 State Software 公司工作时,为了让浏览器和服务器之间能轻量地交换数据,从 JavaScript 的字面量语法中抽取出了一套极简的数据格式,并给它起了名字:JSON。

2006 年,Crockford 发布了 RFC 4627,把 JSON 正式标准化。之后 JSON 迅速取代了当时流行的 XML,成为 Web 数据交换的事实标准。今天的 JSON 规范是 2017 年发布的 RFC 8259。

一个有意思的细节:Crockford 自己说,JSON 并不是他"发明"的,而是他"发现"的——因为 JavaScript 早就这么写对象了,他只是把其中可以跨语言使用的部分抽出来,规定了几条严格的规则。

三、JSON 的语法规则

JSON 的规则非常简单,核心就六种数据类型:

类型写法示例说明
字符串"hello"必须用双引号
数字42, 3.14整数或浮点数
布尔值true, false小写
空值null小写
数组[1, 2, 3]有序集合,用方括号
对象{"k": "v"}键值对集合,用花括号

几条容易踩坑的规则:

  1. 键名必须用双引号,不能用单引号,也不能不加引号。
  2. 字符串只能用双引号,单引号会报错。
  3. 不能有多余的逗号,比如 [1, 2, 3,] 在 JSON 里是非法的。
  4. 不能写注释///* */ 都不行。
  5. 顶层只能是对象或数组,不能是单独的字符串或数字(虽然很多解析器宽松地允许了)。

四、为什么需要"格式化"

你可能会问:JSON 不就是一段文本吗,为什么还要专门做"格式化"工具?

原因在于实际开发中,JSON 经常以压缩形式传输,为了节省带宽,所有的换行和缩进都被去掉了。比如下面这段:

{"name":"张三","age":28,"address":{"city":"北京","zip":"100000"},"hobbies":["读书","游泳"]}

这种"一行流"对机器很友好,但人眼几乎没法读。一旦数据稍微复杂一点,排查问题就成了灾难。

JSON 格化式(Format / Beautify / Prettify) 做的事情就是:把这一整行重新加上换行和缩进,让它变成层次分明的样子:

{
  "name": "张三",
  "age": 28,
  "address": {
    "city": "北京",
    "zip": "100000"
  },
  "hobbies": [
    "读书",
    "游泳"
  ]
}

反过来也有一个常见操作叫压缩(Minify),把所有空白去掉,用于上线前减小体积。

五、格式化的实际好处

好处说明
可读性强一眼看出嵌套层级,排查接口返回值特别方便
减少出错漏逗号、多逗号、少括号的问题在格式化后会立刻暴露
便于 diff代码评审和版本控制里,格式化后的 diff 更清晰
便于学习新手通过格式化后的 JSON 能更快理解数据结构
自动校验大多数格式化工具会同时做语法校验,错误位置一目了然

举个真实场景:前端调用接口返回一段 JSON,里面某个字段少了逗号,导致整个解析失败。如果你直接看压缩版的原始字符串,可能瞪半小时都找不到问题;但只要往格式化工具里一贴,它立刻告诉你"第 12 行缺少逗号"。

六、JSON vs XML 对比

在 JSON 流行之前,XML 是数据交换的主流格式。下面是一段等价的数据,分别用 XML 和 JSON 表示。

XML 版本:

<person>
  <name>张三</name>
  <age>28</age>
  <address>
    <city>北京</city>
    <zip>100000</zip>
  </address>
  <hobbies>
    <hobby>读书</hobby>
    <hobby>游泳</hobby>
  </hobbies>
</person>

JSON 版本:

{
  "name": "张三",
  "age": 28,
  "address": { "city": "北京", "zip": "100000" },
  "hobbies": ["读书", "游泳"]
}

两者对比:

维度JSONXML
体积大(标签重复)
解析速度
可读性
注释支持不支持支持
扩展性一般强(有 schema、命名空间)
适用场景Web API、配置、日志文档、企业级消息、SVG 配置

总体来说,JSON 在体积和解析速度上完胜 XML,所以 Web 数据交换几乎全部用 JSON。但在需要严格 schema 校验、文档结构复杂的场景(比如 Office 文档、SVG),XML 仍然占有一席之地。

七、实践推荐

理解了 JSON 是什么之后,日常开发中最常用的操作就是"格式化"和"压缩"。与其每次都自己手写脚本,不如直接用在线工具:

把接口返回的压缩 JSON 粘进去,一键得到带缩进、带语法高亮、带错误提示的版本,排查问题效率立竿见影。支持格式化、压缩、转义、校验一条龙,是前后端联调时最常用的工具之一。