JSON 对比是什么?
一般的文本对比会因为排版、缩进或 key 的顺序不同而显示一堆差异。本工具先把两边解析成 JSON 结构再比较,只列出真正不同的数据,例如 API 改版前后的响应、两个环境的配置文件。
如何使用
- 左边粘贴原本的 JSON,右边粘贴新的 JSON,开启「自动对比」时会立即列出差异。
- 每一项差异会标示类型(新增、删除、修改)与 JSON Path,例如
$.order.items[0].price。 - 点击差异,左右两边会标出位置;点「复制报告」可以粘贴到 PR 或文档中。
对比规则
- 对象按 key 对比:key 的顺序不同不算差异。
- 数组按位置对比:第 1 个比第 1 个,顺序不同会显示为修改。
- 数字按数值比较:
1.0与1、1e2与100视为相同,大数字也不会丢失精度;关闭此选项则比较原始写法。 - 字符串按内容比较:
"中"与"中"视为相同。
示例
原本 {"name":"Keyboard","price":980.00,"tags":["office","usb"]},新的 {"price":980,"name":"Keyboard Pro","tags":["office","bluetooth"],"color":"black"},报告为:
~ $.name: "Keyboard" → "Keyboard Pro" ~ $.tags[1]: "usb" → "bluetooth" + $.color: "black"
price 从 980.00 变成 980,数值相同,所以不列出。
常见问题
报告开头的 + - ~ 是什么意思?
+ 是右边新增的字段,- 是右边删除的字段,~ 是两边都有但值不同,箭头左边是原本的值、右边是新的值。
数组顺序不同,为什么显示很多差异?
数组在 JSON 中是有顺序的,[1, 2] 与 [2, 1] 是不同的数据,所以会逐一比较每个位置。若顺序不重要,可以先在生成 JSON 的程序中排序再对比。
JSON 有错误时怎么办?
消息会说明是左边还是右边有错,以及错误的行号与列号,点「跳到错误位置」即可找到。若是少了逗号、多了逗号这类错误,可以先用 JSON 格式化的「修复」功能处理。