输入
{"name":"Ada","roles":["admin","editor"]}格式化结果
{
"name": "Ada",
"roles": [
"admin",
"editor"
]
}工具能指出 JSON 在哪里无效,但字符串、数字或 null 的业务选择需要由你决定。
JSON 格式化器把紧凑或凌乱的 JSON 重写成缩进一致的版本,让你真正看清结构;再点一下,又能把它压缩回适合生产环境的最小形态。它还会边处理边校验:不再是从应用日志里冒出一句含糊的 “unexpected token”,而是直接告诉你文档在第几行第几列出错。开发者用它查看 API 响应、调试 Webhook、审阅配置文件,以及在发送前整理请求体。
.json 文件。示例 1 —— 查看 API 响应。 一次请求返回了长长的一行:
{"user":{"id":42,"name":"Ada","roles":["admin","editor"],"lastLogin":"2026-09-01T09:14:00Z"},"active":true}
格式化后层级一目了然:顶层对象有 user 和 active,user 内部是一个含四个键的对象,其中 roles 是数组。在缩进后的版本里你能一眼看出 roles 是数组而非字符串——这个区别在一行版本里几乎看不出来。
示例 2 —— 尾随逗号。 手工编辑的配置:
{
"timeout": 30,
"retries": 3,
}
校验会在右大括号前的那个逗号处报错。删掉它对文档就合法了。这是现实中最常见的 JSON 错误,很大程度上是因为 JavaScript 和 Python 都允许尾随逗号。
示例 3 —— 缩减载荷。 在发布配置文件或把 JSON 嵌进日志行之前,压缩能把 40 行的美化对象变成紧凑的一行,通常在不丢任何数据的情况下省下 30–50% 的字节。
JSON 有一套严格而小巧的语法:值可以是对象({})、数组([])、字符串(只能用双引号)、数字、true、false 和 null。解析器从左到右读取文本,在内存中构建一棵树;任何一个标记不合法,解析就在该字符处停止。
格式化遍历这棵树,用缩进(常见为两个或四个空格)和换行重新序列化;压缩做同样的遍历,但不输出任何可省略的空白。两种操作都是对已解析结构的重新序列化,因此不会悄悄改变数值——但也无法“修复”非法输入,这正是校验器只报告不修复的原因。
有一点值得记住:由于键存放在对象里,重复的键会在解析时被合并,最后一次出现的值生效。这是标准行为而非缺陷,但意味着含重复键的文档在往返处理后看起来会不一样。
{name: 'Ada'} 是合法的 JavaScript,但不是合法 JSON,键和值都需要双引号。// 和 /* */ 不属于 JSON。需要注释的配置请用支持 .jsonc 的编辑器。EF BB BF,严格解析器会在第 0 位报错。请另存为不带 BOM 的 UTF-8。"id": "007" 格式化后仍是字符串;下游系统若期望数字,引号就有影响。JSON 本身不在意缩进,所以团队会选一套约定并坚持。每层两个空格是 JavaScript 与 Web 工具链里最常见的默认;每层四个空格多见于 Java 和 Python 生态。有些团队还会按字母顺序排列键,让 diff 更稳定——新增一个键时只有那一行变化,而不是整块移动。如果项目用了 Prettier 或 ESLint 之类的格式化工具,也请让它覆盖 JSON 文件,这样 Pull Request 展示的是真实数据变更而不是空白噪音。本工具的思路与此一致:手动应用、复制结果、保持仓库一致。
不会。这两种操作只增加或删除空白——缩进、换行以及标记之间的空格。数值本身(包括数字精度和字符串内容)在重新解析后逐字节保留,只有非法的 JSON 才会被拒绝。
解析器停在了它无法理解的第一个字符处。最常见的原因有:在右大括号或右方括号前多了一个逗号、使用了单引号的键或值、含有注释,或者键未加引号。把文本贴进格式化器,它会标出准确的行与列。
它只检测并报告错误,不猜测修改,因为静默改动文档可能改变其含义。对于尾随逗号、缺少引号这类常见问题,错误信息会精确指向位置,几秒即可修好。结构性修复请在源文件中手动完成,不要依赖自动更正。
格式化与压缩完全在浏览器中运行,实际上限取决于设备内存。几 MB 的文件可瞬间完成;超过约 10–20 MB 时,浏览器在渲染缩进输出时可能卡顿。处理超大文件时,可先压缩查看,或拆分文件。
绝不会。解析、校验、格式化和压缩都由 JavaScript 在您的浏览器本地完成,不传输、不记录,因此可安全用于机密的 API 数据、令牌和内部配置。
格式化(美化)用缩进和换行展开文档,让人能看清结构;压缩则相反,删除所有可省略的空格和换行,为生产环境、存储或网络传输生成最小的载荷。两者处理后的数据完全相同。
由 HandyTools Hub 团队审校 · 最后更新