Tool Kumar 工具

JSON 对比

粘贴原始文档和修改后的文档,即可看到改动。对比视图让两个编辑器保持对齐,并标出新增、删除和修改。

如何使用这个工具

  1. 在第一个面板中粘贴原始 JSON。
  2. 在第二个面板中粘贴修改后的 JSON。
  3. 查看“更改”列表或逐行的“Diff”,然后复制 JSON Patch 或任意一份文档。

示例演示

两份文档的键顺序不同,但“忽略键顺序”(默认开启)不会把它报告为差异。把 $.meta.updatedAt 加入忽略路径后,只剩两处更改:role 的值,以及新增的标签。“复制 JSON Patch”会给出下面这份 RFC 6902 补丁。

输入 · ignoring $.meta.updatedAt

Original:
{"id":7,"name":"Ada","role":"admin","tags":["beta"],"meta":{"updatedAt":"2026-10-14T09:00:00Z"}}

Modified:
{"name":"Ada","id":7,"role":"editor","tags":["beta","staff"],"meta":{"updatedAt":"2026-10-15T08:30:00Z"}}

输出

[
  {
    "op": "replace",
    "path": "/role",
    "value": "editor"
  },
  {
    "op": "add",
    "path": "/tags/1",
    "value": "staff"
  }
]

选项与特殊情况

  • “更改”按 JSON 路径列出每一处结构差异。“Diff”会先用同样的方式格式化两份文档,再逐行对比,因此缩进和空格的差异不会被当作更改。
  • “忽略键顺序”默认开启,所以键相同、顺序不同的对象会被视为相等。关闭它即可看到键顺序的更改。
  • 在“更改”中,“忽略数组顺序”会把数组当作无序集合来比较,“忽略大小写”则在比较字符串时不区分大小写。“Diff”只支持“忽略键顺序”。
  • 忽略路径可以跳过总在变化的干扰字段:$.meta.updatedAt 是一个精确路径,$.items[*].ts 匹配每个 item,而像 updatedAt 这样单独的键名会匹配任意深度的同名键。
  • “复制 JSON Patch”会把差异写成 RFC 6902 补丁,用它可以把原始文档变成修改后的文档。被忽略的路径和仅键顺序不同的更改不会包含在内。
  • 数字按值比较,因此 1.0 等于 1,大整数也会保留每一位。带有唯一 id、_id、uuid、key 或 name 的对象数组,会按这个值来匹配元素。

默认保护隐私

你的文档只保留在这个浏览器中。Tool Kumar 在你的设备上解析、转换并生成下载文件,无需账号,也没有上传步骤。

JSON 对比:常见问题

可以对比两个 JSON 文件吗?
可以。在两个对比面板中各打开一个文件,或者直接粘贴两份文档。
对比时会把文件发送到服务器吗?
不会。解析和对比都在浏览器中进行。
能对比嵌套数组吗?
能。嵌套的对象和数组会逐个元素对比,在数组中插入一个元素,不会把后面的元素都标为已更改。
怎样忽略总在变化的时间戳?
在“更改”视图的“要忽略的路径,用逗号分隔”输入框中输入它的路径,例如 $.meta.updatedAt。多个路径用逗号分隔;[*] 匹配每一个数组索引。
可以把差异导出为 JSON Patch 吗?
可以。“复制 JSON Patch”会复制 RFC 6902 的 add、remove 和 replace 操作,用它们可以把原始文档变成修改后的文档。

相关工具

JSON 格式化工具、JSON 校验工具和JSON Schema 生成器。