JSON 格式化

JSON FORMAT & VALIDATE

格式化、压缩、校验三件事一个页面搞定,出错会精确指到第几行第几列。

错误定位到 行列
保留原始数值写法

原始 JSON

—

格式化结果

—
格式化结果会显示在这里。

关于「JSON 格式化」

这是一个纯前端的 JSON 格式化与校验工具,格式化、压缩、语法检查三件事放在一起做。和多数在线工具不同的是,它不做解析再序列化,而是自己扫描一遍原始文本,只调整空白和缩进,所以数字的写法不会被悄悄改掉。

怎么用

  1. 把 JSON 粘贴到中间上方,下面立刻给出格式化结果,不用点按钮。
  2. 左侧切换格式化或压缩,格式化模式下还能选 2 空格、4 空格或 Tab 缩进。
  3. 需要按字母整理键顺序时,打开「键名按字母排序」。数组的元素顺序不会被动。
  4. 语法有问题时,右侧「校验结果」会给出出错的行列位置和上下文。

常见错误对照

错误写法问题正确写法
{"a":1,}对象最后一个元素后多了逗号{"a":1}
{'a':1}键用了单引号{"a":1}
{"a":undefined}JSON 没有 undefined{"a":null}
{"a":1} {"b":2}根位置出现了两个值[{"a":1},{"b":2}]
{"a":01}数字不能有前导零{"a":1}

几个值得留意的点

数字的写法会被保留

用 JSON.parse 再 JSON.stringify 的做法,会把 1.0 变成 1、把 1e3 变成 1000,超过 16 位的整数还会丢精度。做接口调试时,这类静默改动很容易掩盖问题。本工具只动空白,数值一个字符都不改。

错误定位给到行列

报错不只是说「有语法错误」,而是指到具体位置,并把出错的那一行前后都显示出来,下方用尖括号标出错的字符。JSON 压缩成一行时这个功能尤其有用。

压缩后的体积能差不少

缩进和换行在 JSON 里都是无意义的字符。一个层级较深的配置,格式化与压缩之间的体积差异经常能到三成以上。往接口里传数据用压缩版,人看的时候用格式化版。

中文不会被转义

字符串里的中文原样输出,不会变成一串 \uXXXX。如果接口要求 ASCII 安全的写法,那需要在传参时单独处理,格式化工具不该替你做这个决定。

常见问题

为什么用这个工具格式化,数字不会变形?

因为它没有走 JSON.parse 再 JSON.stringify 那条路。工具自己做词法分析,按原样保留每个数字的写法,只调整空白与缩进。

报错显示的第几行第几列准不准?

按字符位置精确计算。先定位出错字符的下标,再换算成行列,并把前后一行显示出来,出错处下方用尖括号指出。

为什么尾随逗号也算错误?

JSON 标准不允许对象或数组最后一个元素后面跟逗号。{"a":1,} 在 JavaScript 里合法,在 JSON 里非法,很多接口因此报错。

中文会不会被转成 \uXXXX?

不会。工具原样保留字符串里的中文,不做多余的转义转换。

键排序会打乱数组顺序吗?

不会。排序只作用在对象的键上,数组元素的顺序始终保留原样。

支持多大的文件?

几百 KB 基本是一瞬间的事,接近几 MB 时会有一点延迟。超大文件建议用命令行工具处理。

友情链接

以下站点与本站长期互链,内容各自独立运营,点击将在新窗口打开。

✔已复制