介绍
粘贴 JSON,把它展开成带缩进的样子,或者收回成一行。出错的输入会给出解析失败的位置而不是被悄悄修好,因为一个会猜你意思的格式化工具比一个会停下来的更糟。
使用方法
粘贴文本后选择格式化或压缩。无效 JSON 不会产出结果,而是给出错误,错误会指向解析器放弃的位置。
两种形状,同一份文档
带缩进的 JSON 是给人看的,压缩过的是给线路走的。在两者之间切换不改变任何内容,所以格式化工具可以放心处理它并不理解的数据。实际用途是把接口返回的那一整行展开,让嵌套变得可见,再把改好的版本收回一行贴进请求里。
解析器在哪里停下
解析错误指出文本第一次不再有效的位置,而那未必是犯错的位置。靠近开头的一个没闭合的括号,会在最末尾才浮现成失败。报出的位置看起来莫名其妙时,去看它上面的结构而不是它指的那个字符,并且逐段格式化更小的片段来缩小范围。
能解析不等于内容对
解析成功证明的是语法成立。它没有说必填字段在不在、数字是不是以字符串的形式来的,或者结构和接口承诺的是否一致。那些是 schema 的问题,需要 schema 校验器。有大量线上 bug 就藏在格式化得很漂亮的 JSON 里。
超大文档和浏览器
一切都发生在这个标签页里,所以能处理多大取决于这个标签页拿到多少内存。几兆没问题,一份很大的导出会先让页面变卡再失败。到那个量级请用命令行工具,顺便也免去把整份文档塞进一个文本框。
常见问题
数据会上传服务器吗?
不会。解析在你的浏览器里完成,这也是它可以用来处理一段带真实客户记录的接口响应的原因。
格式化和压缩有什么区别?
格式化加上缩进和换行,让人能读。压缩去掉每一个可省的空白,方便机器传输。两者的数据完全相同。
我的 JSON 里有注释,解析不了。
注释不属于 JSON,尽管好几种配置格式允许。请去掉它们,或者改用你的工具期待的那种宽松变体的解析器。
怎么找到它说的那个错误?
从报出的位置往回看。闭合括号前的多余逗号、该用双引号的地方用了单引号,以及字符串里没转义的引号,占了绝大多数。