跳转到正文

JSON 格式化与验证工具

粘贴 JSON,即可使用 2、4 或 8 个空格进行美化排版,压缩为单行,或仅检查其能否正确解析。有效的 JSON 会以彩色显示,并标明处理前后的大小;无效的 JSON 则会返回浏览器自身的错误信息。免费,无需注册,您粘贴的内容不会离开您的浏览器。

0 行 · 0 字节

如何使用 JSON 格式化工具

  1. 1. 粘贴 JSON。 可以是单个值,也可以是大型 API 响应。输入时,输入框会实时统计行数和字节数。
  2. 2. 选择缩进。 选择 2、4 或 8 个空格。该设置仅影响“格式化”。
  3. 3. 选择操作。 格式化会进行美化排版;压缩会删除所有可选的空格和换行;仅验证会检查语法,并以绿色或红色显示结论,但不生成输出。
  4. 4. 查看结果。 有效的 JSON 会以彩色显示(键为紫色,字符串为绿色,数字为蓝色,true 和 false 为橙色,null 为红色),并显示输入大小、输出大小和百分比变化。无效的 JSON 则会显示解析器的信息。复制输出会复制您所看到的内容。

什么是有效的 JSON

本工具将您的文本交给 JavaScript 引擎的严格 JSON 解析器处理,因此它只接受格式标准 RFC 8259(与 ECMA-404 语法相同)所允许的内容,不多也不少。这比 JavaScript 对象字面量更严格,因此在脚本中能运行的代码,在这里常常会失败。常见原因如下:

JSON 无法解析的常见原因
错误示例修正
多余的逗号{"a": 1,}删除最后一个逗号。
单引号{'a': 1}对每个键和字符串都使用双引号。
未加引号的键{a: 1}为其加上引号:{"a": 1}。
注释// note 或 /* note */JSON 没有注释;请将其删除。
前导零或加号007、+5改写为 7 和 5。
NaN、Infinity 或 undefined{"x": NaN}JSON 中不存在这些值;请改用 null 或字符串。
字符串中的原始换行引号内的换行将其写为两个字符 \n。
缺少逗号{"a": 1 "b": 2}用逗号分隔各个成员。

单独的 42、"text" 或 null 也是有效的 JSON:自 RFC 7159 起,JSON 文本可以是任何值,而不只是对象或数组。首字母大写的 True 或 NULL 则不合法,三个字面量都必须是小写。

格式化会改变什么

本工具会解析您的 JSON,然后重新写出,因此结果是相同的数据,但排版不同,而不是逐字符的副本。有四个方面可能不同,其中前两项对于将格式化结果交给其他系统使用的人尤其重要:

  • 大整数会丢失精度。 JavaScript 数字是 64 位浮点数,因此超过 9,007,199,254,740,991(253 − 1)的整数会被四舍五入。9007199254740993 会变为 9007199254740992。如果您的 ID 这么大,请将其保存为字符串。
  • 重复的键会合并。 RFC 8259 指出名称应当唯一,但并未禁止重复;本工具会保留最后一个值,并丢弃之前的值。
  • 类整数的键会排到最前。 在 JavaScript 中,像 "1" 和 "2" 这样的键会按升序排在其他键之前,因此 {"b":1,"2":1,"1":1} 会写回为 {"1":1,"2":1,"b":1}。其他键保持您的原有顺序。
  • 数字和转义会被改写。 1.50 变为 1.5,1e2 变为 100,\u00e9 变为 é。

示例

以下是一段 119 字节的输入,其中包含一个大 ID、一个末尾零、一个指数和一个转义字符:

输入

{"title":"APA Manual","year":2020,"tags":["style","7th"],"id":9007199254740993,"price":1.50,"x":1e2,"name":"caf\u00e9"}

以 2 个空格进行格式化会写出 156 字节(+31%),每个成员占一行,其中包括 "id": 9007199254740992、"price": 1.5、"x": 100 和 "name": "café"。压缩会写出 114 字节(-4%),并保持在单行上,改动相同。数据的其他部分没有任何变化。大小以 UTF-8 字节计算,因此 é 计为两个字节。

您需要哪个工具?

本页面针对 JSON 本身。如果您的数据是其他格式,可以使用对应的工具:CSV 转 JSON 用于电子表格,计划中的 YAML 转 JSON 和 XML 转 JSON 转换器,XML 格式化工具 用于 XML 文档,HTML 格式化工具 用于标记语言。

常见问题

JSON 格式化工具是做什么的?
它会解析 JSON,然后以一致的缩进和每个成员一行的方式重新写出,使压缩过的 API 响应变得易读。由于它必须先解析,因此也兼作验证工具:不是有效 JSON 的文本会产生错误,而不会输出结果。
为什么我的 JSON 显示无效?
通常是上表中的某种错误:多余的逗号、单引号、未加引号的键、注释或缺少逗号。错误信息来自浏览器自身的 JSON 解析器,因此 Chrome、Firefox 和 Safari 的措辞各不相同,也不一定会给出位置;请在它所指的位置或其前一处查找问题。
我可以格式化带注释的 JSON、JSON5 或 JSONC 吗?
不可以。注释、多余的逗号和单引号都不属于 JSON,而本工具使用严格的解析器。请先将它们删除,或在编辑器中将文件转换为普通 JSON。
“格式化”、“压缩”和“仅验证”有什么区别?
格式化会添加缩进和换行;压缩会删除所有可选的空白,得到最小的文本;仅验证只检查语法,并给出结论而不输出内容。三者使用相同的解析器,因此通过其中一项的文档,也会通过全部三项。
为什么我 JSON 中的数字发生了变化?
本工具将数字作为 JavaScript 浮点数读取,并以 JavaScript 的最短形式写回。这会把 1.50 变为 1.5,把 1e2 变为 100,并将大于 253 − 1 的整数四舍五入。如果超大的标识符必须原样保留,请将其保存为字符串。
我的 JSON 会被上传到任何地方吗?
不会。解析、格式化和高亮全部在您的浏览器中完成,您粘贴的文本不会发送到 CitationEasy 或任何其他地方。在共用的电脑上使用完毕后,请清空输入框。
我可以对键排序或使用制表符缩进吗?
这里不支持。缩进可选 2、4 或 8 个空格;键会保持输入中的原有顺序,只是类整数的键会如上所述排到最前。

相关工具

数据、标记语言与代码中的更多工具