HandyTools Hub
← 返回工具列表

JSON 格式化工具

格式化、验证和美化 JSON 数据,支持语法高亮。

格式化后的 JSON 将显示在此处...

用一个真实接口响应试试

格式化紧凑的接口响应

输入

{"name":"Ada","roles":["admin","editor"]}

格式化结果

{
  "name": "Ada",
  "roles": [
    "admin",
    "editor"
  ]
}

格式化工具无法猜测业务含义

工具能指出 JSON 在哪里无效,但字符串、数字或 null 的业务选择需要由你决定。

阅读 JSON.parse 排错指南

JSON 格式化器把紧凑或凌乱的 JSON 重写成缩进一致的版本,让你真正看清结构;再点一下,又能把它压缩回适合生产环境的最小形态。它还会边处理边校验:不再是从应用日志里冒出一句含糊的 “unexpected token”,而是直接告诉你文档在第几行第几列出错。开发者用它查看 API 响应、调试 Webhook、审阅配置文件,以及在发送前整理请求体。

使用方法

  1. 粘贴或输入你的 JSON。JavaScript 风格的写法(键不加引号、单引号)可以顺带改掉。
  2. 选择操作:「格式化」添加缩进,「压缩」去掉所有可省略的空白,「校验」只检查格式是否合法、不改动文本。
  3. 查看结果。合法文档会带语法高亮显示在输出区;非法文档会显示第一个错误及其行列位置。
  4. 复制或下载。复制按钮把结果放入剪贴板,可直接贴进编辑器、请求体或保存为 .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。解析器从左到右读取文本,在内存中构建一棵树;任何一个标记不合法,解析就在该字符处停止。

格式化遍历这棵树,用缩进(常见为两个或四个空格)和换行重新序列化;压缩做同样的遍历,但不输出任何可省略的空白。两种操作都是对已解析结构的重新序列化,因此不会悄悄改变数值——但也无法“修复”非法输入,这正是校验器只报告不修复的原因。

有一点值得记住:由于键存放在对象里,重复的键会在解析时被合并,最后一次出现的值生效。这是标准行为而非缺陷,但意味着含重复键的文档在往返处理后看起来会不一样。

常见错误与边界情况

  • 尾随逗号。 在 JSON 中永远不合法,尽管 JavaScript 和 Python 允许。
  • 单引号或不加引号的键。 {name: 'Ada'} 是合法的 JavaScript,但不是合法 JSON,键和值都需要双引号。
  • 注释。 // 和 /* */ 不属于 JSON。需要注释的配置请用支持 .jsonc 的编辑器。
  • UTF-8 BOM。 有些编辑器会在文件开头保存隐藏的 EF BB BF,严格解析器会在第 0 位报错。请另存为不带 BOM 的 UTF-8。
  • 数字被存成字符串。 "id": "007" 格式化后仍是字符串;下游系统若期望数字,引号就有影响。
  • 超大文档。 超过约 10 MB 时浏览器渲染缩进文本会变慢;只想查看或复制时,先压缩。

格式化约定的统一

JSON 本身不在意缩进,所以团队会选一套约定并坚持。每层两个空格是 JavaScript 与 Web 工具链里最常见的默认;每层四个空格多见于 Java 和 Python 生态。有些团队还会按字母顺序排列键,让 diff 更稳定——新增一个键时只有那一行变化,而不是整块移动。如果项目用了 Prettier 或 ESLint 之类的格式化工具,也请让它覆盖 JSON 文件,这样 Pull Request 展示的是真实数据变更而不是空白噪音。本工具的思路与此一致:手动应用、复制结果、保持仓库一致。

功能

  • 格式化(美化),带缩进与语法高亮
  • 压缩为最小的合法表示
  • 格式校验,报出第一个错误的行列位置
  • 支持任意深度的嵌套对象与数组
  • 在浏览器内复制与下载
  • 100% 客户端处理——数据不离开设备

使用场景

  • API 调试: 展开难以阅读的响应,直接看关键字段。
  • Webhook 与日志排查: 在上线前发现格式错误的数据。
  • 配置审阅: 审查配置文件的真实结构,而不是相信缩进。
  • 载荷准备: 把 JSON 嵌入请求、日志行或 URL 参数前先压缩。

相关工具

常见问题

格式化或压缩会修改我的数据吗?

不会。这两种操作只增加或删除空白——缩进、换行以及标记之间的空格。数值本身(包括数字精度和字符串内容)在重新解析后逐字节保留,只有非法的 JSON 才会被拒绝。

为什么我的 JSON 报 unexpected token?

解析器停在了它无法理解的第一个字符处。最常见的原因有:在右大括号或右方括号前多了一个逗号、使用了单引号的键或值、含有注释,或者键未加引号。把文本贴进格式化器,它会标出准确的行与列。

它能自动修复非法 JSON 吗?

它只检测并报告错误,不猜测修改,因为静默改动文档可能改变其含义。对于尾随逗号、缺少引号这类常见问题,错误信息会精确指向位置,几秒即可修好。结构性修复请在源文件中手动完成,不要依赖自动更正。

它能处理多大的 JSON 文件?

格式化与压缩完全在浏览器中运行,实际上限取决于设备内存。几 MB 的文件可瞬间完成;超过约 10–20 MB 时,浏览器在渲染缩进输出时可能卡顿。处理超大文件时,可先压缩查看,或拆分文件。

我的 JSON 会被上传吗?

绝不会。解析、校验、格式化和压缩都由 JavaScript 在您的浏览器本地完成,不传输、不记录,因此可安全用于机密的 API 数据、令牌和内部配置。

格式化和压缩有什么区别?

格式化(美化)用缩进和换行展开文档,让人能看清结构;压缩则相反,删除所有可省略的空格和换行,为生产环境、存储或网络传输生成最小的载荷。两者处理后的数据完全相同。

由 HandyTools Hub 团队审校 · 最后更新