找出出错的位置
粘贴的 JSON 无法解析时,页面会给出解析器停下的行和列。先别急着盯住那个位置,往上看一行。逗号多写或少写,解析器要到下一个记号才发现,所以报出来的位置通常在真正的错误之后。
出错的原因就那几种。
- 末尾多余的逗号。 JavaScript 对象里允许,JSON 里是错误。
- 单引号。
'name'不是 JSON 字符串,键和值都要用双引号。 - 注释。 带
//或/* */的配置文件是 JSONC,不是 JSON。 - 不加引号的键。
{name: "值"}是 JavaScript 的写法。 NaN和Infinity。 看着像数字,但不在 JSON 规范里,常常是从日志里复制时带进来的。
什么时候用压缩
压缩会去掉所有可省略的空白,把整个文档变成一行。要塞进配置项、放进一个环境变量、或者作为 curl 的请求体时,就需要这种形态。它也能减小体积,不过服务器本来就会用 gzip 压缩响应,单靠体积很少构成理由。
要提交进代码仓库的文件请保留缩进。压缩后的 JSON 改一个字符,差异就会变成整份文件,没人看得动。
键的顺序和缩进
格式化不会改动键的顺序。规范里说对象的键顺序没有意义,但实际上几乎所有解析器都保留写入顺序,所以这个工具也不做排序。
缩进用 2 个空格最常见,4 个空格多见于 Python 相关的工具链。制表符能省几个字节,但在不同编辑器里宽度不一样。团队仓库里跟着现有的写法走就行。
粘贴令牌和真实响应时
输入不会被发送到任何地方。文本只在浏览器里解析再重新序列化,含客户资料的响应或访问令牌都不会离开这台设备。不过有些公司无论工具怎么实现都禁止使用外部网站,如果是生产数据,请先确认规定。