JSON 无处不在——API、配置文件、数据库。但未格式化的 JSON 几乎无法阅读。本文介绍 JSON 格式化的含义、重要性以及高效处理方法。

什么是 JSON 格式化?

格式化(或”美化输出”)JSON 是指添加一致的缩进和换行,使结构易于阅读。对比一下:

原始:

{"name":"Alice","age":30,"skills":["js","python"]}

格式化后:

{
  "name": "Alice",
  "age": 30,
  "skills": [
    "js",
    "python"
  ]
}

数据相同,可读性天壤之别。

JSON 语法规则

格式化之前,JSON 必须是合法的。关键规则:

  • 字符串必须使用双引号——"key",不能用 'key'
  • 必须是字符串(带引号)
  • 不允许尾部逗号[1, 2, 3,] 是无效的
  • 不允许注释(标准 JSON 不支持)
  • 可以是:字符串、数字、对象、数组、truefalsenull

常见 JSON 错误

错误类型示例修复方法
尾部逗号{"a":1,}删除逗号
单引号{'a':'b'}改用双引号
未加引号的键{a: 1}给键加引号
undefined 值{"x": undefined}改用 null
注释// comment删除——JSON 不支持注释

如何在线格式化 JSON

最快的方式是使用纯浏览器工具——无需安装,无需粘贴到 IDE。

试试 ZeroTool JSON 格式化工具 →

边输入边实时格式化,内联高亮语法错误,一键复制结果。

选择 JSON 格式化工具的标准

  1. 实时验证 — 边输边发现错误
  2. 语法高亮 — 嵌套结构一目了然
  3. 错误提示 — 精确告知解析失败位置
  4. 复制按钮 — 一键复制到剪贴板

在代码中格式化 JSON

JavaScript / Node.js

const ugly = '{"name":"Alice","age":30}';
const pretty = JSON.stringify(JSON.parse(ugly), null, 2);
console.log(pretty);

JSON.stringify(value, replacer, space) — 第三个参数设置缩进宽度。

Python

import json

ugly = '{"name": "Alice", "age": 30}'
pretty = json.dumps(json.loads(ugly), indent=2)
print(pretty)

命令行(jq)

echo '{"name":"Alice"}' | jq .
# 或格式化文件:
cat data.json | jq .

jq 是处理 JSON 的标准 Unix 工具。用 brew install jqapt install jq 安装。

压缩 JSON

格式化的反操作:删除所有空白以减小文件体积。在通过网络传输数据前很有用。

// JavaScript
const minified = JSON.stringify(JSON.parse(pretty));

ZeroTool JSON 格式化工具 同样支持压缩——粘贴已格式化的 JSON 后点击压缩即可。

处理大型 JSON 的技巧

  • 折叠节点 — 好的格式化工具支持折叠对象/数组
  • 按键搜索 — 比滚动查找更快
  • 分页数组 — 如果数组有数千项,只渲染可见行
  • 使用流式解析器 — 文件超过 50 MB 时,用 oboe.js(Node.js)或 ijson(Python)避免一次性加载

总结

任务工具
快速格式化 / 验证ZeroTool JSON 格式化工具
命令行格式化jq .
JavaScriptJSON.stringify(obj, null, 2)
Pythonjson.dumps(obj, indent=2)

整洁的 JSON 调试更快、diff 更清晰、也更不容易隐藏错误。养成每次都使用格式化工具的习惯。