跳到主要内容
PulsarKit

JSON格式化校验

缩进、压缩或只检查JSON文件,错误定位到行和列,不易察觉的问题也会明确指出。

把文件拖到这里

.json, .jsonc, .txt · 最大100 MB

如何格式化JSON

  1. 1

    拖入JSON文件

    添加一个文件,或最多二十个,每个最大100 MB。带注释和末尾逗号的文件也能读取。

  2. 2

    选择格式化、压缩或校验

    格式化会缩进文档,压缩会去掉所有可省略的字节,校验只报告发现的问题,不生成文件。

  3. 3

    查看报告并下载

    错误附带行号和列号;警告列出重复的键和精度丢失。结果没问题就保存下来。

错误带位置,而不是一句含糊的提示

各浏览器对解析错误的报告并不一致:有的给字符偏移量,有的只给一句话,措辞还会随版本变化。所以这里的JSON由专为这个工具编写的解析器读取,任何失败都会换算成行和列。在一个包含40,000个对象的导出文件里,知道多余的逗号在第8,421行,就是两分钟修好和浪费一下午的区别。

重复的键和悄悄改变的数字

有两个问题在普通解析中永远不会暴露。同一对象里重复的键对多数解析器是合法的,它们保留最后一个值,什么也不说;这里会显示两处的行号。超过2^53的整数,比如9007199254740993,无法作为JSON数字精确保存,读回来会少一。外部API的标识符经常遇到这个问题,所以每个这样的字面量都会连同路径一起报告。

输入宽松,输出严格

真实文件里常有//注释、/* 块注释 */,以及最后一项后面的末尾逗号。这些都看得懂,但所有符合标准的解析器都会拒绝它们。宽松模式接受这些写法,并告诉你删掉了什么。输出始终是纯粹、合法的JSON。切换到严格输入,可以证明文件本身已经符合标准。

数据留在标签页里

API导出和配置导出里往往有令牌、地址和客户记录,所以这些内容都不会发送到任何地方。文件的读取、解析、检查和重写都在你的浏览器里完成,较大的文件交给后台线程处理。不上传,无需账号,关闭标签页后不留副本。

常见问题

为什么带注释的JSON也能通过?

因为默认输入模式是宽松模式://和/* */注释以及末尾逗号都会接受,作为警告报告,并从输出中去掉。对手工编辑的配置文件来说,这是实用的选择。如果确实需要证明文件是标准JSON,把输入模式切换为严格,这些写法就会变成错误。

unexpected token错误是什么意思?

解析器在某个位置遇到了一个不能用的字符。常见原因是缺了或多了逗号、用单引号代替双引号、键没有加引号,或者值提前结束。提示里给出了行和列,从报告位置往前一两个记号开始读。

怎么去掉所有缩进?

选择压缩。所有可省略的空格、制表符和换行都会去掉,结果只有一行,通常比缩进版小15%到30%。解析出的数据完全相同,所以凡是能用格式化版本的地方,都可以直接换成压缩后的文件。

什么是数字精度丢失?

JSON数字是浮点数,所以大于2^53的整数不能全部精确表示。输入9007199254740993,得到的是9007199254740992。外部系统的长标识符最常受影响。每个有这个问题的字面量都会连同路径一起标出,根本的解决办法是让生成数据的API把这些ID作为字符串发送。

能按字母顺序给键排序吗?

能,排序是一个开关,作用于每一层嵌套。比较两份导出之前最有用,因为它消除了没有意义的顺序差异,diff里只剩真正的改动。JSON里键的顺序没有含义,所以排序不会丢失任何信息。

校验模式有什么不同?

它检查完就停止。你会得到结论以及完整的错误和警告列表,但不会生成可下载的文件。只想知道文件是否完好、并不打算重写它时用这个模式,比如即将发布的构建产物或API响应。

我的JSON会上传到哪里吗?

不会。解析、检查和重写都在你的浏览器标签页里完成,使用的是随页面加载的代码。没有服务器接收这些文本,不记录任何内容,关闭标签页后什么也不留。

指南

相关工具