如何将压缩的 JSON 还原为可读格式
什么是 JSON 美化(Prettify)?
JSON 美化(Prettify)是格式化(Formatting)的别称,专指将压缩的单行 JSON 转换为带有缩进和换行的可读多行格式。这是 JSON 压缩(Minify)的逆操作,两个操作都是完全可逆的——数据内容丝毫不变,只有呈现形式发生了改变。
对于开发者来说,需要美化 JSON 的典型场景:从 API 日志中提取出压缩的 JSON 进行分析;阅读第三方库返回的 JSON 响应;将 JSON 数据粘贴到文档或分享给同事时需要可读格式;在代码审查(Code Review)中查看 JSON 配置变更。
最快的美化方法:各工具对比
按速度和便捷程度排序:
- 浏览器控制台(最快,无需切换窗口):
console.log(JSON.parse(jsonStr)),直接在页面控制台展示交互式树形 JSON - 在线工具:粘贴-点击-复制,整个过程约 5 秒,适合临时使用
- VS Code:新建
.json文件,粘贴内容,按Shift+Alt+F,整个过程约 10 秒 - 命令行 jq:
echo '压缩JSON' | jq .,适合在终端工作流中 - Python 命令:
echo '压缩JSON' | python3 -m json.tool
各编程语言中的美化代码
// JavaScript
const pretty = JSON.stringify(JSON.parse(minified), null, 2);
# Python
import json
pretty = json.dumps(json.loads(minified), indent=2, ensure_ascii=False)
// Go
var obj interface{}
json.Unmarshal([]byte(minified), &obj)
pretty, _ := json.MarshalIndent(obj, "", " ")
// Java (Jackson)
ObjectMapper mapper = new ObjectMapper();
Object json = mapper.readValue(minified, Object.class);
String pretty = mapper.writerWithDefaultPrettyPrinter()
.writeValueAsString(json);
大型 JSON 的美化性能优化
对于超大 JSON 文件(数百 MB 甚至 GB 级),标准的"先完全解析,再重新序列化"的方式会消耗大量内存。更高效的方法是流式处理(Streaming Processing),逐块读取 JSON 并输出美化结果,而不是一次性加载到内存。
命令行工具 jq 支持流式处理模式(--stream),可以处理任意大小的 JSON 文件而不会耗尽内存。对于 1GB 以上的 JSON 文件,这是唯一可行的本地处理方式。
美化后的 JSON 键名排序
默认情况下,美化不改变对象键的顺序(保持原始顺序)。但有时候,对键名进行排序(按字母顺序)可以更容易比较两个 JSON 对象的差异:
// JavaScript - 按键名排序美化
function sortAndPrettify(obj) {
return JSON.stringify(
obj,
(key, value) => {
if (value && typeof value === 'object' && !Array.isArray(value)) {
return Object.fromEntries(
Object.entries(value).sort(([a], [b]) => a.localeCompare(b))
);
}
return value;
},
2
);
}
# Python - 按键名排序美化
json.dumps(data, indent=2, sort_keys=True, ensure_ascii=False)
# jq - 按键名排序
jq -S . data.json # -S 表示 sort keys
美化用于代码审查
在 Git 版本控制中,如果 JSON 配置文件以压缩格式存储,每次修改后 git diff 只显示一行变更,完全看不出实际改了什么。将 JSON 配置文件保持格式化(美化)状态存储,可以让 git diff 清晰显示具体的字段变更,极大地提升代码审查的效率和可靠性。
团队规范建议:所有版本控制中的 JSON 文件应以格式化(美化)格式存储(使用统一的缩进,推荐 2 空格);生产环境的 API 响应和部署的静态 JSON 文件可以使用压缩格式;不要在同一文件中混用两种格式。
prettier 和代码格式化工具
在前端开发项目中,prettier 是代码格式化的标准工具,也支持 JSON 文件的自动格式化。通过在项目根目录添加 .prettierrc 配置,可以统一团队的 JSON 格式化规范:
// .prettierrc
{
"tabWidth": 2,
"printWidth": 80,
"trailingComma": "es5"
}
结合 Git pre-commit hook(如 lint-staged),可以在每次提交时自动格式化所有 JSON 文件,确保仓库中永远不会出现格式不一致的 JSON,减少不必要的格式化差异干扰代码审查。
立即免费使用相关工具
免费使用 →