tigtools

JSON 格式化工具

粘贴 JSON,即可美化格式或压缩内容。如果 JSON 无效,工具会指出问题及其位置。你的数据始终保留在浏览器中。

在浏览器中运行 无需注册

缩进

使用方法

  1. 将 JSON 粘贴到输入框,或按“试用示例”。
  2. 选择缩进方式(2 个空格、4 个空格或制表符),也可以选择按字母顺序排列键。
  3. 在右侧查看格式化结果。按“压缩”可移除所有空白字符。
  4. 如果 JSON 有语法错误,请根据显示的行号和列号修正,然后复制结果或下载为 .json 文件。

工作原理

格式化工具使用浏览器内置的 JSON 解析器解析文本,再按你选择的缩进重新输出,因此结果始终是有效且缩进一致的 JSON。压缩会以无空格、无换行的形式输出相同数据,这种形式占用空间最小,适合通过网络发送或存储在配置项中。

如果输入不是有效的 JSON,严格的检查器会找出第一个问题并报告其行号和列号,同时说明常见错误:末尾多余的逗号、单引号、未加引号的键、注释,以及 NaN 或 undefined 等 JavaScript 中存在但 JSON 不支持的值。不同浏览器对 JSON 错误的描述各不相同,因此错误位置由工具计算,而不是从浏览器的错误消息中读取。

请注意重新格式化的限制。数字以双精度浮点数存储,因此大于 9,007,199,254,740,991 (2^53 − 1) 的整数(例如某些数据库 ID)会丢失精度:9007199254740993 会变成 9007199254740992。此类 ID 请以字符串形式保存。如果对象中有重复的键,只会保留最后一个值。看起来像整数的键("1"、"20")无论是否启用排序,都会被 JavaScript 排在其他键之前。几 MB 以内的输入都可以处理;超过约 300,000 个字符时,实时格式化会暂停,需要按“格式化”,以保证输入流畅。

示例

查看 API 响应

REST API 返回了一行很长的内容,例如 {"user":{"id":7,"tags":["a","b"]}}。使用 2 个空格缩进格式化后,每个键都会单独占一行,tags 数组也会以嵌套形式显示,方便你一眼看清结构。

比较两个配置文件

两个 JSON 配置文件包含相同的设置,但顺序不同。启用“按 A–Z 排序键”后分别格式化,输出内容就会对齐,文本差异工具也只会显示实际差异。

查找多余的逗号

手动编辑的 package.json 无法加载。粘贴内容后,工具会在第 14 行第 5 列显示“末尾多余的逗号”,指出最后一个依赖项后的逗号。

常见问题

为什么格式化后大数字变了?

浏览器中的 JSON 解析器会将数字存储为 64 位浮点数,只有不超过 9,007,199,254,740,991 的整数才能精确表示。更大的整数会被舍入到最接近的可表示值。如果数据包含 64 位 ID,请将其作为字符串传输。

可以格式化包含注释或末尾多余逗号的 JSON(JSON5、JSONC)吗?

不支持。工具严格遵循 JSON 标准 (RFC 8259),会报告注释和末尾多余的逗号及其位置,方便你将其删除。大多数编程语言中的 JSON 解析器也会这样处理。

排序键会改变我的数据吗?

不会改变任何值,只会调整对象中键的顺序。JSON 对象本身没有顺序之分,因此排序后的结果在含义上等同于原数据。数组不会重新排序,因为数组中的顺序有意义。

可以格式化多大的文件?

当前桌面浏览器可以处理数 MB 的文件。输入超过约 300,000 个字符时,工具会等你按“格式化”或“压缩”,而不是每次击键都重新格式化。在手机上,输出非常大时,文本框滚动可能会变慢。

我的 JSON 会上传到其他地方吗?

不会。解析和格式化都通过 JavaScript 在浏览器中运行。文本不会发送到服务器,也不会被存储。

隐私

你的 JSON 仅在浏览器中解析和格式化,不会上传、记录或存储,也不会用于分析。