JSON 格式化与校验

把压成一行的 JSON 展开成人看得懂的结构,顺带指出语法错在第几行第几列;也能压缩成一行、把键名递归排序。 全部在你的浏览器里完成,不联网、不上传

输入区是空的。空输入不算错误——点按钮只会得到一句提醒。

在输入框里按 Ctrl + Enter(Mac 上是 ⌘ + Enter)等于点「格式化(缩进 2 空格)」。

结果

还没有结果。粘一段 JSON 进来,再点上面的按钮。

说明:JSON 的数字进到 JavaScript 里是 64 位浮点数,超过 2^53-1 的整数会被就近取整, 接口里那种 19 位的 ID 格式化之后末尾几位可能就变了——这类字段请保持字符串形态,别在这里做数字转换。 「键名按字母排序」是按字符码位递归比较的(大写排在小写前面),数组元素的先后顺序一律不动。

JSON 是从哪来的

JSON 全称 JavaScript Object Notation。2001 年前后,Douglas Crockford 把 JavaScript 里"写对象"的那套字面量语法单独拎出来, 做成一种与语言无关的数据交换格式——只借语法,不借 JavaScript 的任何行为。 后来它被 ECMA-404 和 RFC 8259 收成正式标准,如今几乎每种语言都自带解析库。

它流行起来的原因很朴素:文本格式,人能读,机器也好读。同样一件事用二进制协议表达,调试前得先找个工具; 用 JSON 表达,肉眼就能看出字段名和值。配置文件、接口返回、日志、缓存里到处都有它。

为什么接口和日志里的 JSON 都压成一行

另外可以放心:压缩只动结构上的空白,字符串里的内容一个字节都不会变。

最常见的几个语法坑

看起来像 JSON,其实不是 JSON

它和 JavaScript 对象字面量差在哪

一句话:JSON 是文本,对象字面量是代码。JSON 只能描述数据,字面量还能写逻辑。 具体差别:键名只能是双引号字符串;没有 undefined、函数、正则、日期(时间一般约定写成 ISO 8601 字符串,取到后自己转 Date); 不支持注释、尾逗号、单引号、十六进制数字;JSON.parse 只产出纯数据、不会执行任何东西,所以取数据请用它,别用 eval。

怎么用这个工具


本工具完全在你的浏览器里运行,粘贴的内容不会发送到任何服务器,也不会被保存。关掉页面就没了。

← 返回工具箱