JSON 格式化工具

格式化、压缩和验证 JSON。可选择缩进方式使内容更易读,或压缩为单行。语法错误也可即时检查。

JSON 输入
格式化结果 有效的 JSON 无效的 JSON
{{ result.lines }} 行 / {{ result.bytes.toLocaleString() }} 字节
{{ result.error }}

什么是 JSON 格式化工具

JSON 格式化工具可把挤在一行、难以阅读的 JSON 重新整理为带缩进的形态,也可反过来去除空白、压缩为一行。由于在解析输入的同时也会判定语法是否正确,因此只需粘贴 API 响应或配置文件,即可一并完成格式化、压缩与校验三件事。缩进可从2个空格、4个空格与制表符中选择。

判定使用浏览器自身的 JSON 解析器,因此不会出现「本工具能通过、运行环境却报错」的落差。处理全部在您所使用的设备内完成,粘贴的 JSON 不会被发送至服务器。即便是含有认证令牌或个人信息的 API 响应,也能在不外泄内容的前提下加以格式化。

JSON 格式化工具的使用方法

  1. 粘贴 JSON 把 JSON 粘贴到左侧的输入框。若手边没有可试的数据,可用「示例」按钮载入范例。
  2. 选择缩进的宽度 从2个空格、4个空格与制表符中选择。配合项目的格式规范,即可原样贴回。
  3. 查看有效与无效的标示 随输入即时切换「有效的 JSON」「无效的 JSON」标记。无效时会原样显示解析器返回的错误信息,可据以追查在第几行的哪个字符处受阻。
  4. 选择格式化版或压缩版复制 「复制格式化结果」把带缩进的结果、「复制压缩结果」把去除空白后的单行结果放入剪贴板。
  5. 确认行数与字节数 行数计的是格式化后的结果,字节数计的是压缩后的结果并以 UTF-8 计量。估算传输量时请看后者。

用好本工具的小技巧

  • JSON 的键必须用双引号括起来,单引号无效。
  • 末尾逗号(如 {"a":1,})在 JSON 规范中是无效的。
  • 数字可使用科学计数法(e 表示),但 NaN 和 Infinity 是无效的。
  • 字符串中的双引号需转义为 \",换行符用 \n,制表符用 \t。
  • 压缩可有效减小文件体积。API 传输推荐使用压缩版,配置文件建议使用格式化版。

JSON 格式化工具的应用场景

阅读 API 响应的内容

把以一行返回的响应加以格式化,嵌套的深度与数组的元素数便能以肉眼追踪。这是开发中的动作确认与排查缺陷时最常见的用法。

查明配置文件的语法错误

当应用无法读取配置文件时,粘贴并校验即可当场锁定尾随逗号、引号未闭合等原因。

为减少传输量而压缩

把格式化后的 JSON 直接作为 API 响应或内嵌数据返回,会因缩进的空白而白白增加传输量。用于分发时请使用压缩版。

整理要贴到文档或 Issue 的代码示例

可把要放进规格书或缺陷报告的请求示例、响应示例,改成缩进整齐、易于阅读的形态。

转换为其他格式之前的预处理

先确认语法无误,在把数据交给JSON 转 TypeScript 类型定义或JSON 转 XML等转换工具时,便不必为转换端难以判明原因的报错而烦恼。

与 JSON 相关的术语

JSON
JavaScript Object Notation 的缩写,是 RFC 8259 所定的数据交换格式。仅由对象、数组、字符串、数值、布尔值与 null 六种构成,因不限语言皆可读写,遂成为 Web API 的标准格式。
格式化(美化输出)
按嵌套的深度加入缩进与换行,重新组织为人可阅读的形态。数据的内容不变,仅外观改变。
压缩(minify)
去除所有与语义无关的空白与换行,汇为一行。字节数减少故可压低传输量,但不适合人来阅读。
校验(validation)
确认输入是否合乎 JSON 的文法。本工具交由浏览器的解析器解析,并在失败时原样显示其错误信息。
转义序列
指在字符串中,用反斜杠表示那些无法直接书写之字符的写法。双引号写作 \",换行写作 \n,制表符写作 \t。
键的顺序
JSON 本身并未为对象的键规定顺序。本工具需经由 JavaScript 的对象,故只有形如 "1"、"2" 这类可读作整数的键会被重排为升序,其余的键则保持书写时的次序。
UTF-8
RFC 8259 规定 JSON 所应使用的字符编码方式。中文等 ASCII 以外的字符每字占多个字节,故字符数与字节数并不一致。

常见问题

JSON 的键必须使用双引号,不允许末尾逗号,也不能使用 undefined、函数、NaN 和 Infinity。

不可以。JSON 规范中不存在注释语法。JSON5 和 JSONC 可作为替代方案。

RFC 8259 要求必须使用 UTF-8。出于互操作性考虑,推荐使用 UTF-8。

根据 JSON 规范,所有数字均为 number 类型。较大的整数在 JavaScript 中超过 MAX_SAFE_INTEGER 时可能会丢失精度。
工具君

闲话 ― JSON 胜过 XML 的原因

2000 年代初期 XML 曾是主流,但 Douglas Crockford 于 2001 年提出 JSON 后,凭借其轻量、易用、易读的特性,2010 年代以后 JSON 已成为标准格式。

同等数据下,JSON 的字节数通常比 XML 少 30~50%,在移动通信时代直接影响应用的响应速度。

RFC 8259 规定键重复为"SHOULD NOT",并非禁止。{"a":1,"a":2} 在语法上有效,但行为未定义。