工具说明
JSON 本身没有规定缩进和换行,所以接口返回的数据经常是压缩成一行的。格式化的作用是把这种单行文本重新排布成带缩进的层级结构,让嵌套关系可读;压缩是反过来去掉所有非必要空白,减少传输体积。两个操作都只改动空白字符,不改动数据。
标准 JSON(RFC 8259)不允许注释、尾逗号、单引号字符串和未加引号的 key,但配置文件里这些写法很常见:tsconfig.json 和 VS Code 的 settings.json 用的是 JSONC,部分工具链用的是 JSON5。这里的解析器同时接受这三种写法,读进来之后统一按标准 JSON 输出,所以可以直接粘贴一个带注释的配置文件,不必先手动删注释。
解析失败时错误信息会指出出错位置。最常见的三种原因是:字符串内部有未转义的双引号、对象最后一个成员后面多了逗号、以及从日志里复制时带上了外层的转义反斜杠。后两种可以交给 JSON 修复清洗先处理一遍。
使用步骤
粘贴或输入 JSON
输入框支持直接粘贴和输入。停止输入约 300 毫秒后会自动格式化一次,常规使用不需要每次点按钮。
选择输出形式
「格式化」输出两空格缩进的多行 JSON,「压缩」输出去掉全部空白的单行 JSON。URL 与 Uni 编解码只递归处理 JSON 中的字符串值,不改变 key、数组和对象结构。
在树形视图里定位字段
格式化结果默认以树形展示,点击节点可以逐层展开或折叠。层级很深时先用「全部折叠」收起来,再展开到目标路径,比在纯文本里数括号更快。
复制或下载结果
「复制」把当前输出写入剪贴板;「下载」把格式化、压缩或字段值编解码后的完整 JSON 保存为 formatted.json。
输入与输出示例
同一份数据的两种形式。压缩形式适合写进环境变量或请求体,格式化形式适合阅读和 code review。
{"name":"ToolGarden","tags":["json","pdf"],"limits":{"maxDepth":64,"strict":false}}{
"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 这类字节级压缩算法是两个不同层面的操作。