JSON 格式化

在宽屏里格式化、压缩或转义 JSON,并在右侧树上改同一份数据。不合法时会标出浏览器能给出的行和列。

转义
格式化
Aa文本 #数字 T布尔 NNull { }对象 [ ]数组

左边是源码,右边是同一份树

这一页是宽屏工作台,处理一份 JSON。左边是你粘贴的文本,右边是同一份数据的树,可以折叠、搜索和修改。它负责格式化、压缩和转义,不会替坏掉的 JSON 猜一个修复结果。只把一句话放进 JSON 字符串、而不是整份文档,用 JSON 转义。和 CSV 互转用 JSON 转 CSV。YAML 用 JSON 转 YAML。

怎么用

  1. 把 JSON 贴进左边,或点显示示例、导入,也可以把 .json 或 .txt 文件拖到左边。底部状态是光标所在的行和列,以及字符数、行数。左右两边都有行号,并跟着滚动。右边工具栏的行号默认勾选,取消即可关掉。中文按字符计,不是按字节。
  2. 格式化按所选缩进(2 或 4)排开。压缩变成一行。按键名排序在右侧。勾上会重排对象的键,取消勾选会回到勾选前的顺序。数组顺序不动。
  3. 转义把文本变成一个 JSON 字符串。文本本身是合法 JSON 时,会先按当前缩进排开再转义。压缩转义先压成一行再转义。反转义只解析一层。若结果是字符串,就显示这层字符串,不会再解析一次。
  4. 树跟着左边的文本更新。点 ▾ 折叠节点。工具栏上的折叠会收起整棵树,按钮变成展开;再点展开就全部打开,按钮变回折叠。
  5. 搜索默认不显示,点工具栏上的搜索才出现。它匹配键和值。可以区分大小写,也可以折叠没有命中的分支。上一个、下一个在命中之间移动。树下面的路径是 JSONPath,例如 $.tags[0]。
  6. 双击键或值可以改。单击布尔值会在 true 和 false 之间切换。悬停一行,+ 添加节点,× 删除节点。左边的复制、右边的复制结果,以及导出,拿走的都是左边的文本。全屏占满屏幕。窗口变窄时,树改到源码下面。

解析会做什么、不会做什么

只接受 JSON。尾逗号、单引号、注释都会报错。浏览器给出位置时,提示里带行和列。重复的键保留最后一个,这是 JSON.parse 的行为。整数如果像 Unix 时间戳(秒或毫秒),旁边会显示你电脑上的本地时间,这个提示不会写回 JSON。节点超过 4000 个时仍可格式化和压缩,但不再画树,避免页面卡住。在树上修改会重写左边。原来是一行的,改完仍是一行。原来有换行的,按当前缩进重写。特别大的整数可能丢掉末尾位数,需要保留每一位时请写成字符串。示例是一个对象,里面有字符串「Ada」、布尔值、null、数组,以及时间戳 1700000000。全角空格不会被当成 JSON 的空格,夹在符号中间会导致解析失败。

什么时候用

  • 读一段压成一行的接口返回,把不看的分支折起来。
  • 改测试数据里的一个字段,不用自己找逗号。
  • 把整份 JSON 转义后嵌进另一段字符串,再用反转义还原。

常见问题

尾逗号被拒绝了。

这里接受的是 JSON,不是 JSON5。去掉逗号和注释。浏览器给出位置时,提示会写行和列。

很大的文件没有树。

超过 4000 个节点就不画树。格式化和压缩仍会改写左边。需要树时,先把文档裁小。

把 null 改成一段文字后,外面多了引号。

null 可以改成 null、true、false 或 JSON 数字。其他文字会存成字符串。