关于 JSON 格式化
从接口日志、数据库文本字段或浏览器控制台里复制出来的 JSON 通常挤成一整行,肉眼根本看不出层级,排查「这个字段到底挂在哪一层」时只能反复搜索括号。JSON 格式化工具解决的就是这个场景:粘贴原文,立刻得到带缩进的结构,再按需压缩回单行粘进代码或配置。 原理很直接:用 JSON.parse 做一次严格解析,再用 JSON.stringify 按指定缩进重新输出,全程在浏览器内完成。它不做任何「自动修复」——这是刻意的,因为宽松修复会把真正的语法错误藏起来,让你在别处再踩一次。 使用上的几个要点:缩进选 2 空格还是 4 空格只影响可读性,与合法性无关;如果目的是比对两份配置的差异,先把键名排序再比对,否则同一份配置换个写法就会整段标红;格式化后如果要贴回代码,记得压缩回单行,避免把几百行缩进带进源码文件。 边界与限制需要特别注意:JSON 规范不允许注释、尾随逗号、单引号字符串以及 NaN、Infinity 这些字面量,而从 JavaScript 对象字面量直接复制过来的内容往往同时带着这四样,解析会报 Unexpected token。这类报错不会告诉你行号,排查方法是先把内容压缩到单行再逐段缩减。另一个高频坑是精度:超过 2 的 53 次方减一的整数(雪花 ID、纳秒时间戳)在 JS 数字里无法精确表示,格式化后会看到末位被抹成 0,遇到这类字段应要求接口以字符串返回。最后,几十兆的 JSON 在浏览器里解析会明显卡顿甚至触发内存告警,超大文件建议先在命令行按顶层键切分。 数据与隐私:接口响应里经常同时带有访问令牌、手机号、内网地址与用户 ID,这些内容一旦上传到第三方格式化站点就等于泄露。本工具在浏览器本地完成解析与序列化,不发送任何网络请求;你可以打开开发者工具的 Network 面板粘贴一段敏感 JSON,确认没有任何请求发出,也可以断开网络后再试。
与相邻场景的边界也值得说明。带注释的配置文件(JSONC、JSON5)不能被标准解析器接受,编辑器与某些构建工具却默认允许,这就产生了「本地能跑、线上解析失败」的落差;解决方向是换用支持注释的格式(如 YAML、TOML),或在构建期剥离注释后再发布。另一个常见做法是用 eval 或 new Function 解析配置,这会把配置文件变成可执行代码,一旦文件被篡改就等于任意代码执行,必须避免。需要反复查看结构时,可把格式化后的文本保存为文件并用编辑器的折叠功能长期对照,而不是每次都重新粘贴解析。
最后补一句工作流建议:如果把格式化步骤固定成编辑器的保存动作,或接入提交前检查,就不必每次手动往返网页工具;把「先格式化、再比对」写进排查步骤,能让配置类问题的定位时间明显下降。 另外,格式化前后的字符数应当一致,若明显变少说明原文本身已被截断,此时应先确认复制是否完整再排查语法。
实现原理
格式化本身只做两件事:用严格解析把文本转成内存中的对象树,再按指定缩进重新序列化。关键在于「严格」——解析器不会替你补引号或去掉尾随逗号,因此语法错误会当场暴露,而不是被悄悄修正后在别处出问题。缩进宽度只影响可读性,不参与任何合法性判断。
{"b":2,"a":[1,{"c":true}]}{
"b": 2,
"a": [
1,
{
"c": true
}
]
}使用方法
- 打开 JSON 格式化工具
- 在左侧编辑器中粘贴或输入 JSON 数据
- 点击「美化」按钮格式化 JSON,或点击「压缩」按钮压缩
- 使用语法高亮和行号检查数据结构,可点击「排序键」排序
- 复制格式化后的 JSON 或直接下载为文件
使用场景
- 调试 API 响应 — 将后端返回的扁平 JSON 美化成带语法高亮的可读结构,错误时定位到具体行列,快速定位字段。
- JSONPath 提取字段 — 用 $.data.users[0].name 这类表达式实时过滤输出,从大响应中精准取出目标数据。
- 检查配置文件 — 校验 package.json、tsconfig.json 等配置文件的语法错误,出错行高亮,避免线上事故。
- 压缩传输体积 — 将开发环境的格式化 JSON 压缩成单行,减少网络传输字节数。
- 排序与转义 — 一键按键名排序便于对比 diff,或对字符串做 JSON 转义/去转义。
- 分享数据片段 — 把当前 JSON 压缩进 URL 生成分享链接,无需上传服务器即可发给同事。
常见问题
语法出错时能定位到哪一行吗?
可以。解析失败时编辑器会高亮出错行,并在底部给出「第 X 行第 Y 列」以及人话提示(如缺少逗号、属性名未加引号),无需自己逐字符排查。
JSONPath 查询怎么用?
在查询栏输入如 $.config.theme 或 $.tags[*] 的表达式,输出区会实时显示匹配结果与命中数量,支持通配、递归下降与过滤表达式。
本工具支持多大的 JSON?
基于 CodeMirror 编辑器,常规几 MB 的 JSON 都能流畅编辑。若是超大日志文件,建议先用命令行工具 jq 预处理。
能解析 JSON5 / JSONC 吗?
不能。本工具只支持严格的 JSON 标准。如果需要带注释或单引号的语法,请先手动转换为标准 JSON。
分享链接会上传我的数据吗?
不会。分享功能用 LZ 压缩把数据编码进 URL 的 hash 片段,数据始终留在链接本身,不经过任何服务器。
想转换成 YAML/TOML 怎么办?
请使用本站的「数据格式转换器」或「JSON 转 YAML」「JSON 转 TOML」工具,支持多格式双向无损转换。
格式化后为什么我的中文出现 \uXXXX 转义序列?
这是编辑器默认按 ASCII 转义非 ASCII 字符导致的显示文本,并非数据损坏。你只需在序列化选项里关闭「转义非 ASCII」开关(或选择不转义输出),中文就会原样保留。导出时若遇到 \uXXXX,可先用本站的「Unicode 转义」工具还原成可读字符再继续处理。
格式化后 JSON 内容会变吗?
不会。格式化只调整空白与缩进,键值对、顺序、数值精度原样保留。唯一要注意的是超大数字(如 18 位订单号):JavaScript 的 Number 精度上限是 2^53,解析时可能已经失真,这与格式化无关,需要用字符串或 BigInt 处理。