JSON 差异对比

对比两个 JSON 文档的结构,只关注真正需要的变更。

输入的文本和文件仅在浏览器中计算和转换,工具不会将原始内容或结果发送到服务器。访问统计与广告通信请查看隐私政策。

使用方法

  1. 在左右两侧粘贴 JSON,或将本地文件拖入对应区域;左侧为变更前文档。
  2. 打开比较选项,设置需要忽略的路径,或用 id 等键匹配对象数组。
  3. 检查新增、删除和变更的路径,并按需导出 CSV、JSON Patch 或排序后的 JSON。

示例

忽略更新时间,保留价格变化

忽略 $.meta.updatedAt 后,时间差异被隐藏,但 $.price 从 10 变为 12 仍会显示。

详细说明

本工具比较的是解析后的 JSON 值与结构,而不是原始文本行。字符串之外的空白不算变更;默认忽略对象成员的顺序,数组则按索引比较。如指定唯一的 id 键,可避免仅因数组重排就产生大量无意义的变更。还可选择将 1、1.0 和 1e0 视为相等数值。

忽略规则使用从 $ 开始的简明路径语法,匹配的节点及其子树从显示比较中排除。不支持完整 JSONPath、递归搜索和过滤表达式。按键匹配要求数组每项都是对象,且指定属性是唯一的字符串或数字;缺少或重复的键会明确报错。

导出的 JSON Patch 使用 RFC 6902 的 add、remove 和 replace 操作以及 RFC 6901 指针转义。它会包含显示上被忽略的差异,以便完整地将左侧原文转换成右侧原文。每侧最多 5 MiB,处理在临时后台工作线程中完成,内容不上传、不写入网址、日志或浏览器存储。

常见问题

为什么摘要为零时补丁仍有变更?

比较选项只隐藏显示差异;补丁始终确保将左侧完整转成右侧。

支持完整 JSONPath 吗?

不支持。可使用 $、.name、[0] 和 [*]。

文件会上传吗?

不会。读取和对比仅在浏览器内存中进行。