toolgarden.xyz
EN

JSON 格式化

格式化、压缩并校验 JSON / JSONC / JSON5,支持注释、尾逗号、树形展示与节点增删,浏览器本地处理,无需上传。

输入 JSON

输出结果

格式化结果将显示在这里

工具说明

JSON 本身没有规定缩进和换行,所以接口返回的数据经常是压缩成一行的。格式化的作用是把这种单行文本重新排布成带缩进的层级结构,让嵌套关系可读;压缩是反过来去掉所有非必要空白,减少传输体积。两个操作都只改动空白字符,不改动数据。

标准 JSON(RFC 8259)不允许注释、尾逗号、单引号字符串和未加引号的 key,但配置文件里这些写法很常见:tsconfig.json 和 VS Code 的 settings.json 用的是 JSONC,部分工具链用的是 JSON5。这里的解析器同时接受这三种写法,读进来之后统一按标准 JSON 输出,所以可以直接粘贴一个带注释的配置文件,不必先手动删注释。

解析失败时错误信息会指出出错位置。最常见的三种原因是:字符串内部有未转义的双引号、对象最后一个成员后面多了逗号、以及从日志里复制时带上了外层的转义反斜杠。后两种可以交给 JSON 修复清洗先处理一遍。

使用步骤

  1. 粘贴或输入 JSON

    输入框支持直接粘贴和输入。停止输入约 300 毫秒后会自动格式化一次,常规使用不需要每次点按钮。

  2. 选择输出形式

    「格式化」输出两空格缩进的多行 JSON,「压缩」输出去掉全部空白的单行 JSON。URL 与 Uni 编解码只递归处理 JSON 中的字符串值,不改变 key、数组和对象结构。

  3. 在树形视图里定位字段

    格式化结果默认以树形展示,点击节点可以逐层展开或折叠。层级很深时先用「全部折叠」收起来,再展开到目标路径,比在纯文本里数括号更快。

  4. 复制或下载结果

    「复制」把当前输出写入剪贴板;「下载」把格式化、压缩或字段值编解码后的完整 JSON 保存为 formatted.json。

输入与输出示例

同一份数据的两种形式。压缩形式适合写进环境变量或请求体,格式化形式适合阅读和 code review。

压缩的单行 JSON
{"name":"ToolGarden","tags":["json","pdf"],"limits":{"maxDepth":64,"strict":false}}
格式化后(2 空格缩进)
{
  "name": "ToolGarden",
  "tags": [
    "json",
    "pdf"
  ],
  "limits": {
    "maxDepth": 64,
    "strict": false
  }
}

支持范围与限制

接受的输入
标准 JSON(RFC 8259)、JSONC(注释与尾逗号)、JSON5(单引号、未加引号 key、十六进制数字)
缩进
格式化固定输出 2 空格缩进;压缩输出不含任何空白字符
数字精度
按 JavaScript number 解析,超过 2^53-1 的整数会丢精度
key 顺序
保持输入中的出现顺序,不做字母排序
注释
输入可以带注释,但标准 JSON 没有注释语法,输出时会丢弃
处理位置
解析、格式化、压缩全部在浏览器内完成,输入不发送到服务器

典型使用场景

  • 读接口返回的压缩响应

    从开发者工具或 curl 拿到的响应通常是单行的。格式化后配合树形折叠,可以快速确认字段是否存在、类型对不对、数组里有几项。

  • 把带注释的配置写进环境变量

    tsconfig.json、eslintrc 这类 JSONC 配置不能直接放进只接受标准 JSON 的地方。先解析成标准 JSON 再压缩成一行,就能安全写进 CI 的环境变量或命令行参数。

  • 让 diff 只显示字段变化

    把两份 JSON 都按同一套缩进格式化之后再对比,diff 才不会被空白差异淹没。格式化完可以直接接 JSON 对比查看增删改。

使用前需要知道的事

  • 格式化只重排空白,不改 key 名、值和数组顺序。如果输出的数据和输入看起来不一致,通常说明输入里有重复 key:后出现的会覆盖先出现的。
  • 数字按 JavaScript number 处理,`1.0` 会输出成 `1`,雪花 ID 这类长整数可能丢末几位。需要原样保留的话,在传输层就应该用字符串承载。
  • 输入是 JSONC / JSON5 时注释会在输出中消失,这是标准 JSON 的语法限制,不是工具丢内容。需要保留注释就不要转成标准 JSON。
  • 所有计算在你的浏览器里完成,页面不上传输入内容,关掉标签页后内容不会留在任何服务器上。

相关概念

RFC 8259
JSON 的现行标准,规定了值类型、字符串转义和字符编码要求。它不定义注释,也不允许尾逗号。
JSONC
"JSON with Comments"。在 JSON 之上允许 // 与 /* */ 注释和尾逗号,主要用于编辑器和构建工具的配置文件。
JSON5
更接近 ES5 字面量的扩展写法,允许单引号字符串、未加引号的 key、十六进制数字和多行字符串。
minify
去掉全部非必要空白得到最小的等价文本,不做有损处理。与 gzip 这类字节级压缩算法是两个不同层面的操作。

常见问题

JSON 格式化会把数据上传到服务器吗?
不会。格式化、压缩和校验都在浏览器本地完成,粘贴的 JSON 不会离开你的设备,适合处理包含敏感字段的数据。
支持 JSONC 和 JSON5 吗?
支持。工具可以解析带注释、尾逗号、单引号的 JSONC / JSON5,并按标准 JSON 重新输出。
如何一键把 JSON 压缩成一行?
粘贴 JSON 后点击压缩,即可去掉所有空白与换行,得到最小化的单行 JSON,方便嵌入代码或接口。
格式化后可以折叠查看层级吗?
可以。输出支持树形展示,能逐层展开或折叠节点,快速定位深层嵌套结构中的字段。
为什么格式化之后数字变了?
解析使用 JavaScript 的 number 类型,它只能精确表示 2^53-1 以内的整数。雪花 ID、订单号这类长整数应当以字符串形式传输,否则任何基于 JavaScript 的 JSON 解析器都会丢精度。
能处理多大的 JSON?
上限取决于你的浏览器可用内存,而不是服务器配额。几十 MB 的文本一般可以处理,但树形视图节点极多时会明显变慢,这种情况建议先用 JSONPath 查询取出需要的子树再看。
输出的 key 顺序会被改动吗?
不会。输出保持输入中 key 的出现顺序,工具不做字母排序,所以格式化前后可以逐行对照。