← 返回工具箱

JSON 格式化完全指南:美化、压缩与错误排查

开发者工具箱 · 使用教程

如果你写过接口、调过 API、改过配置文件,大概率见过 JSON。它长得像一串挤在一起的符号,人也看不懂,机器却能准确解析。这篇文章讲清楚三件事:JSON 是什么、什么时候该格式化、格式出错时怎么查。

一、JSON 是什么

JSON 全称 JavaScript Object Notation(JavaScript 对象表示法),是一种用纯文本描述数据的格式。它只有两种基本结构:

这两种结构可以互相嵌套,理论上能描述任何层级的数据。一个典型的 JSON 长这样:

{"name":"张三","age":28,"skills":["Java","Python"]}

它和 Python 的字典、Java 的 Map 表达的是同一类东西。区别在于 JSON 是一种跨语言的通用格式——不管你的后端是 Java、Go 还是 Python,都能输出 JSON,前端都能读。

二、为什么需要格式化

接口返回的 JSON 通常被压缩成一整行,因为这样体积最小、传输最快。对机器友好,对人极不友好:嵌套三层以后,你根本分不清哪个括号对应哪个。

格式化(也叫美化、pretty print)就是给它加上换行和缩进,让层级结构一目了然:

{
  "name": "张三",
  "age": 28,
  "skills": [
    "Java",
    "Python"
  ]
}

两者的数据完全相同,只是排版不同。判断依据很简单:

场景建议格式
接口传输、存数据库压缩(省流量、省空间)
看日志、调试接口美化(看得清楚)
写配置文件美化(方便人工修改)
提交到代码仓库美化(diff 更清晰)
格式化不会改变数据本身。如果你的程序依赖字段顺序,注意 JSON 标准里对象的键是无序的,不该依赖顺序做判断。

三、怎么用本工具格式化

  1. 打开开发者工具箱的 JSON 标签页
  2. 把原始 JSON 粘贴到输入框
  3. 点「格式化(美化)」,得到带缩进的结果
  4. 点「压缩」,得到去空白的一行版本
  5. 点「复制结果」直接带走

整个过程在你的浏览器里完成,数据不会上传到任何服务器。接口返回的敏感数据(token、手机号等)可以放心粘贴。

广告位 - 适合横幅广告

四、常见错误怎么查

工具在解析失败时会直接告诉你出错位置。下面是几种最常见的语法错误:

1. 多了一个逗号

JSON 不允许最后一个元素后面有逗号,这一点和 JavaScript 对象不同:

{"a": 1, "b": 2,}   ← 报错:多出的逗号
{"a": 1, "b": 2}    ← 正确

2. 键名没加引号

JSON 的键必须是带双引号的字符串,不能像 JS 那样省略:

{name: "张三"}      ← 报错
{"name": "张三"}    ← 正确

3. 用了单引号

JSON 只认双引号。这是从 Python 转过来最常犯的错:

{'name': '张三'}    ← 报错
{"name": "张三"}    ← 正确

4. 注释没删掉

JSON 标准不支持注释。写配置时想加说明,只能换个字段名,或者改用 JSON5 / YAML 这类衍生格式:

{"port": 8080 // 服务端口}   ← 报错
{"port": 8080}              ← 正确

5. 中文引号混进来了

从 Word、微信、文档里复制代码时,双引号常被自动替换成中文的 ""。肉眼看不出差别,解析必然失败。这是最难查的一类错误——建议一律先把内容粘贴到纯文本编辑器再过一遍。

五、常见问题

格式化后数据会变吗?
不会。格式化只改变空白字符,不改变任何字段的值、类型或数量。不过如果某个字段的类型本来就不对(比如数字被写成了字符串),格式化是修不了的,需要你自己改。
为什么我的数字精度丢了?
典型的长整型问题。JSON 本身不区分整型和浮点,但 JavaScript 用双精度浮点数表示数字,超过 2^53 的大整数会丢失精度。常见于订单号、雪花算法 ID。处理办法是让后端把这类字段用字符串返回。
压缩会不会丢数据?
不会。压缩只是去掉多余的空格、换行和缩进,数据完全保留。注意它和"删除空字段"是两回事,本工具不会删除任何字段。
工具会不会记录我粘贴的内容?
不会。页面是纯前端实现,解析和格式化都在你的浏览器里运行,没有任何数据发送到服务器。你可以断网使用——断网后功能依然正常,就说明数据确实没出过你的电脑。
支持多大的文件?
取决于你的浏览器内存。几百 KB 的 JSON 毫无压力,几 MB 会有可感知的卡顿,再大建议用命令行工具(如 jq)处理。
广告位 - 适合横幅广告