工具
ZH

JSON 在线对比工具

粘贴两个 JSON 文档,即可找出所有差异。语义对比会忽略键的顺序和格式,并列出每处改动及其 JSON 路径;左右并排视图会高亮显示有改动的行。

原始 JSON

修改后的 JSON

隐私保护:您的数据仅在浏览器中处理,绝不会被上传。

如何对比 JSON

  1. 在左侧粘贴原始 JSON,在右侧粘贴修改后的 JSON,或分别将文件拖到两侧。
  2. 查看摘要和差异列表:每个新增、删除或修改的值都会显示其路径,例如 $.users[2].email。
  3. 向下滚动到左右并排视图,即可结合上下文查看改动。如果列表项的顺序无关紧要,请勾选忽略数组顺序。

语义化 JSON 对比,而非文本 Diff

普通的文本 Diff 只要遇到键的位置移动、缩进不同或数字写法不同,就会报告为改动。而这个 JSON Diff 工具对比的是数据本身:

如何解读对比结果

标签含义路径指向
新增该值仅存在于修改后的 JSON 中它在修改后的 JSON 中的位置
删除该值仅存在于原始 JSON 中它在原始 JSON 中的位置
修改两个文档都有该键,但值或类型不同它在修改后的 JSON 中的位置

在左右并排视图中,两个文档都会按排序后的键进行格式化,使相互对应的行并排显示;大段未改动的内容会被折叠,除非取消勾选隐藏未改动的行。

常见问题

键的顺序会影响对比结果吗?

不会。按照定义,JSON 对象是无序的,因此对比时会忽略键的顺序。数组则是有序的,除非勾选“忽略数组顺序”。

可以对比大型 JSON 文件吗?

可以。对比在你的浏览器中进行,默认列出前 200 处差异,点击按钮即可显示全部;左右并排视图最多显示 5,000 行。

如何在代码中对比 JSON?

在 Python 中,json.loads(a) == json.loads(b) 可以判断两者是否相等。JavaScript 没有内置的深度比较功能,可以使用 Lodash 等库提供的 _.isEqual(a, b)。在命令行中,diff <(jq -S . a.json) <(jq -S . b.json) 会显示存在差异的行。

我的数据会被上传吗?

不会。两个文档都在你的浏览器中本地对比,数据始终不会离开你的设备。