← 返回博客

如何将压缩的 JSON 还原为可读格式

2026-04-12 · 5 分钟阅读

什么是 JSON 美化(Prettify)?

JSON 美化(Prettify)是格式化(Formatting)的别称,专指将压缩的单行 JSON 转换为带有缩进和换行的可读多行格式。这是 JSON 压缩(Minify)的逆操作,两个操作都是完全可逆的——数据内容丝毫不变,只有呈现形式发生了改变。

对于开发者来说,需要美化 JSON 的典型场景:从 API 日志中提取出压缩的 JSON 进行分析;阅读第三方库返回的 JSON 响应;将 JSON 数据粘贴到文档或分享给同事时需要可读格式;在代码审查(Code Review)中查看 JSON 配置变更。

最快的美化方法:各工具对比

按速度和便捷程度排序:

  1. 浏览器控制台(最快,无需切换窗口):console.log(JSON.parse(jsonStr)),直接在页面控制台展示交互式树形 JSON
  2. 在线工具:粘贴-点击-复制,整个过程约 5 秒,适合临时使用
  3. VS Code:新建 .json 文件,粘贴内容,按 Shift+Alt+F,整个过程约 10 秒
  4. 命令行 jqecho '压缩JSON' | jq .,适合在终端工作流中
  5. 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,减少不必要的格式化差异干扰代码审查。

立即免费使用相关工具

免费使用 →