JSON 格式化

转换器

粘贴 JSON 一键美化或压缩,语法错误直接标出行号与列号并说明原因。支持按层级缩进、压缩成单行、按键名排序,以及折叠展开大对象的分支。语法错误会标出行号与列号并说明原因,常见于多余逗号、单引号与引号缺失。也能用 JSONPath 表达式提取字段,从大响应里取出目标数据。支持粘贴大文件与折叠查看。

就绪
输入
0 行·0 B
输出
0 行·0 B

关于 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 解析配置,这会把配置文件变成可执行代码,一旦文件被篡改就等于任意代码执行,必须避免。需要反复查看结构时,可把格式化后的文本保存为文件并用编辑器的折叠功能长期对照,而不是每次都重新粘贴解析。

最后补一句工作流建议:如果把格式化步骤固定成编辑器的保存动作,或接入提交前检查,就不必每次手动往返网页工具;把「先格式化、再比对」写进排查步骤,能让配置类问题的定位时间明显下降。 另外,格式化前后的字符数应当一致,若明显变少说明原文本身已被截断,此时应先确认复制是否完整再排查语法。

实现原理

格式化本身只做两件事:用严格解析把文本转成内存中的对象树,再按指定缩进重新序列化。关键在于「严格」——解析器不会替你补引号或去掉尾随逗号,因此语法错误会当场暴露,而不是被悄悄修正后在别处出问题。缩进宽度只影响可读性,不参与任何合法性判断。

压缩输入 → 2 空格缩进
输入{"b":2,"a":[1,{"c":true}]}
输出{ "b": 2, "a": [ 1, { "c": true } ] }

使用方法

  1. 打开 JSON 格式化工具
  2. 在左侧编辑器中粘贴或输入 JSON 数据
  3. 点击「美化」按钮格式化 JSON,或点击「压缩」按钮压缩
  4. 使用语法高亮和行号检查数据结构,可点击「排序键」排序
  5. 复制格式化后的 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 处理。

广告