📋
← 返回教程列表

JSON 美化打印:如何格式化 JSON 以提高可读性

· 标签: json, pretty-print, json-formatter, json-indentation, developer-tools

什么是 JSON 美化打印?

JSON 美化打印是指将原始、紧凑(压缩 minified)的 JSON 数据重新格式化,添加合适的缩进、换行和空格,使其易于人类阅读。美化打印后的 JSON 文档使用一致的缩进和清晰的结构化格式,展示出嵌套对象和数组的层级结构。

对比同一数据的两种表示形式:

压缩(minified,难以阅读):

{"users":[{"id":1,"name":"Alice","roles":["admin","editor"]},{"id":2,"name":"Bob","roles":["viewer"]}],"total":2}

美化打印(易于阅读):

{
  "users": [
    {
      "id": 1,
      "name": "Alice",
      "roles": ["admin", "editor"]
    },
    {
      "id": 2,
      "name": "Bob",
      "roles": ["viewer"]
    }
  ],
  "total": 2
}

美化打印与压缩 JSON 的对比

在美化打印和压缩 JSON 之间做选择取决于使用场景:

| 方面 | 美化打印 | 压缩(minified) | |--------|-------------|----------| | 可读性 | 高 -- 结构清晰 | 低 -- 所有数据挤在一行 | | 文件大小 | 更大(更多空白) | 更小(无空白开销) | | 网络传输 | 大型负载更慢 | 更快,占用带宽更少 | | 调试 | 开发时理想之选 | 不适合检查 | | 生产环境使用 | 很少使用 | API 响应的标准做法 |

生产环境 API 通常提供压缩(minified)JSON 以减少带宽占用,而开发者在开发和调试过程中则会对 JSON 进行美化打印。

缩进风格

大多数格式化工具支持两种常见的缩进风格:

2 空格缩进(最常用)

{
  "name": "Alice",
  "age": 30,
  "address": {
    "city": "New York"
  }
}

推荐用于: JavaScript/TypeScript 项目、现代 Web 开发以及大多数一般场景。

4 空格缩进

{
    "name": "Alice",
    "age": 30,
    "address": {
        "city": "New York"
    }
}

推荐用于: Python 项目(PEP 8 风格)以及偏好更宽缩进以获得清晰度的团队。

制表符(Tab)缩进

一些开发者更喜欢基于制表符的缩进,尤其是在注重无障碍的工作流中,用户会在编辑器中调整 Tab 宽度。

选择合适的缩进

大多数团队统一使用 2 空格,因为它在可读性与横向空间利用效率之间取得了平衡。JavaScript 生态(Node.js、React、Vue)绝大多数都使用 2 空格缩进。如果你在以 Python 为主的环境中工作,4 空格缩进可能会感觉更自然。关键在于一致性 -- 选择一种风格,并用 Prettier 或 EditorConfig 之类的工具在整个项目中强制执行。

不同编程语言中的 JSON 美化打印

JavaScript / Node.js

const formatted = JSON.stringify(data, null, 2);
console.log(formatted);

Python

import json
formatted = json.dumps(data, indent=2)
print(formatted)

Java

import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
String formatted = mapper.writerWithDefaultPrettyPrinter()
    .writeValueAsString(data);

Go

import "encoding/json"
formatted, _ := json.MarshalIndent(data, "", "  ")
fmt.Println(string(formatted))

Ruby

require 'json'
puts JSON.pretty_generate(data)

如何美化打印 JSON

使用在线 JSON 格式化工具

最快的方法是使用免费在线 JSON 格式化工具 -- 粘贴你的 JSON,即可获得带语法高亮和错误检测的即时格式化输出。

使用命令行工具

使用 jq(最流行):

cat file.json | jq .

使用 Python:

python -m json.tool file.json

使用 Node.js:

node -e "const d = require('./file.json'); console.log(JSON.stringify(d, null, 2));"

浏览器开发者工具

所有主流浏览器都会在其 Network(网络)选项卡中自动格式化 JSON 响应:

  • Chrome DevTools:Network(网络)选项卡会自动美化打印 JSON 响应
  • Firefox Developer Tools:JSON 响应以可折叠的树视图显示
  • Safari Web Inspector:JSON 预览包含自动格式化

用于 JSON 格式化的 IDE 插件

VS Code

VS Code 拥有出色的内置 JSON 支持。使用 Shift+Alt+F(Windows/Linux)或 Shift+Option+F(macOS)格式化任何 JSON 文件。其他扩展可以增强体验:

  • Prettier -- 一致地格式化 JSON、JSONC 和许多其他语言
  • JSON Tools -- 通过键盘快捷键对 JSON 进行排序、压缩和格式化
  • JavaScript Booster -- 高级 JSON 处理功能

JetBrains IDE(IntelliJ、WebStorm、PyCharm)

  • 内置格式化器:Ctrl+Alt+L(Windows/Linux)或 Cmd+Option+L(macOS)
  • 粘贴时自动校验并格式化 JSON

Vim / Neovim

" Format JSON in place
:%!jq .

高级 JSON 格式化选项

现代 JSON 格式化工具提供的不只是基本的缩进:

  • 键排序 -- 按字母顺序对对象键排序,以获得一致的输出
  • 语法高亮 -- 对键、字符串、数字和布尔值进行颜色编码
  • 可折叠树 -- 展开和折叠嵌套结构,便于导航
  • 行号 -- 在调试时定位特定位置
  • 错误高亮 -- 用详细消息直观地标记语法错误

提高 JSON 可读性的最佳实践

  1. 格式化前务必先校验 -- 格式化工具无法修复无效的 JSON。请先使用 JSON 校验器捕获语法错误。
  2. 制定团队标准 -- 就缩进达成一致(2 空格是行业标准),并用 Prettier 或 linter 强制执行。
  3. 保持浅层嵌套 -- 无论怎么格式化,深层嵌套(4 层以上)的 JSON 都难以阅读。尽可能考虑重构。
  4. 使用有意义的键 -- 描述性、简洁的键名比任何格式化工具都更能提高可读性。
  5. 添加尾部换行 -- 以换行符结束 JSON 文件,以符合 POSIX 标准并避免 diff 噪声。

试试我们的免费在线 JSON 美化打印工具,以可自定义的缩进和语法高亮即时格式化并美化你的 JSON 数据。