短答:对 JSON 而言,「pretty print」和「format」是同一件事 —— 「beautify」也一样。三个词都指:在不改变数据的前提下,加上一致的缩进和换行,让结构变得可读。混乱倒是真的存在,因为旁边还坐着几个确实不同的操作(压缩、校验、树视图)。本文把术语理清楚,并说明什么才是真正的差别。
Pretty Print、Format、Beautify —— 同一个操作
「Pretty print JSON」「format JSON」「beautify JSON」都在描述同一个操作:把一个 JSON 值(通常是紧凑的单行字符串)重新序列化,加上缩进和换行。输出在语义上完全等同于输入 —— 任何解析器从这两种形式都会产出同样的数据,因为 token 之间的空白在 JSON 里是无意义的。
// 紧凑形式(API 返回的样子)
{"user":{"name":"Ada","roles":["admin","editor"]}}
// pretty-printed / formatted / beautified —— 数据完全一样
{
"user": {
"name": "Ada",
"roles": [
"admin",
"editor"
]
}
}所以如果一个工具把「Format」「Beautify」「Pretty Print」做成了不同的按钮,它们干的是同一份活。没什么有意义的技术区别要去学。
那真正不同的是什么?
有意义的区别不在 pretty-print 和 format 之间 —— 而在「格式化」和下面这些邻近操作之间:
| 操作 | 做什么 | 改变数据吗? |
|---|---|---|
| Pretty print / format / beautify | 加空白让结构更易读 | 不改 |
| Minify(压缩) | 去掉空白以缩小体积 | 不改 |
| Validate(校验) | 检查 JSON 语法是否正确 | 不改 |
| Tree view(树视图) | 渲染出可交互、可折叠的结构 | 不改 |
| Repair(修复) | 修复非法 JSON(引号、逗号)以便能解析 | 改(修语法) |
Minify 是 pretty print 的反操作 —— 见 如何压缩 JSON。校验是单独的检查(如何校验 JSON);把大 payload 以树状形式探查是自成一类的事(JSON 树视图)。如果你的输入根本解析不了,那要先 repair,不是 format。
怎么 pretty print JSON
不管工具用哪个词,机制都是一样的:
// JavaScript —— 第三个参数是缩进
JSON.stringify(value, null, 2); // 从一个值开始
JSON.stringify(JSON.parse(raw), null, 2); // 从 JSON 字符串开始
# Python
import json
json.dumps(data, indent=2)
# 命令行
jq . data.json # jq 默认就 pretty-print
python3 -m json.tool data.json完整走一遍 —— 排序键、命令行选项、把别的格式转过来 —— 请看 如何格式化 JSON。
在线 pretty print JSON
不想写代码直接 pretty-print,就把 JSON 贴到 JSON Fix:它会用一致的 2 格缩进格式化(顺手把常见错误也修了,所以即便 JSON 不完全合法也能用),全部在浏览器里,不上传任何东西。想要大文档的可交互视图?改用 JSON Viewer。
常见问题
「pretty print JSON」和「format JSON」是一回事吗?
是的。对 JSON 而言,pretty print、format、beautify 意思都一样:在不改变数据的前提下,加上缩进和换行让它可读。
pretty print 会改我的 JSON 数据吗?
不会。token 之间的空白在 JSON 里无意义,pretty-printed 和紧凑两种形式解析后得到完全相同的数据结构。
在 JavaScript 里怎么 pretty print JSON?
用 JSON.stringify(value, null, 2) —— 第三个参数设缩进(2 个空格、4 个空格,或者用 '\t' 来 tab)。如果起点是字符串,先 parse。
pretty print JSON 的反操作是什么?
Minify(压缩)—— 去掉一切无意义的空白,生成紧凑的单行 JSON。见 如何压缩 JSON。
相关工具和指南
- JSON Fix —— 在浏览器里 pretty-print(顺便修复)JSON
- 如何格式化 JSON —— 带代码和 CLI 的完整 how-to
- 如何压缩 JSON —— 反操作
- JSON Viewer 与 JSON Formatter —— 查看 vs 格式化
- 什么是 JSON? —— 为什么空白是无意义的