语言
简体中文

JSON 对比

结构化与逐行 JSON 差异对比

原始 JSON
目标 JSON
0 处变化

togotools.top 技术参考

技术参考

在浏览器本地对比两段 JSON 文本,按结构化路径列出新增、删除和修改的字段,同时提供逐行文本差异对比视图,所有对比过程均不离开浏览器。

对比模式

  • 结构模式:按 JSON 路径(如 a.b[0])列出每个差异的类型(新增/删除/修改)。
  • 文本模式:按行展示差异,类似 git diff 的增减标记。
  • 支持对象和数组的深层递归对比,不要求两边键顺序一致。
  • 对比在浏览器本地完成,不上传任何输入数据。

示例:字段修改

结构模式按路径定位差异,不受格式化方式影响。文本模式对格式化风格敏感,建议先格式化两侧 JSON 再对比。

json diff
左侧:{"id":1,"name":"Ada","role":"admin"}
右侧:{"id":1,"name":"Ada","role":"editor","active":true}

差异:
  role:     admin    -> editor
  active:   (新增)   -> true

使用边界

  • 数值精度:JavaScript 使用 IEEE 754 双精度浮点,超大整数可能丢失精度。
  • 相同值但不同类型(如 1 和 "1")会被视为差异。
  • 数组顺序敏感:元素相同但顺序不同的数组会被标记为差异。

常见问题

能忽略某些字段不做对比吗?

当前版本不支持按路径忽略字段。可以先在文本编辑器中删除不需要对比的键,再粘贴进来对比。

为什么顺序不同的数组显示很多差异?

对比是按位置逐一比较的,不支持无序数组匹配。如果顺序无关紧要,可以先对数组排序再对比。