JSON Diff 结构对比

按结构(而非文本)递归比较两份 JSON,高亮新增、删除、值变更、类型变更,支持忽略键顺序、忽略数组顺序、按主键匹配数组元素、忽略大小写与空白,输出 JSON Patch。

🔒 本地运行🧬 支持 JSON Patch
差异清单左右对照JSON Patch / 结构
左侧(旧 / 基准)✔
右侧(新 / 待检)✔
新增字段
4
删除字段
1
值变更
3
类型变更
1
共 9 处差异 · 新增 4 · 删除 1 · 变更 3 · 类型 1
类型发生变化,反序列化可能直接报错,务必找上游确认。
差异清单
全部新增删除变更
类型路径左侧右侧
~ 变更$.messageoksuccess
~ 变更$.timestamp17300000001730009999
! 类型$.data.list[id=1001].price
number → string
299299
+ 新增$.data.list[id=1001].hot—true
~ 变更$.data.list[id=1002].price499459
+ 新增$.data.list[id=1002].tags[1]—RAG
− 删除$.data.list[id=1003]{"id":1003,"name":"数据大屏可视化模板","price":199,"onSale":false,"ta…—
+ 新增$.data.list[id=1004]—{"id":1004,"name":"秒杀系统实战","price":159,"onSale":true,"tags":…
+ 新增$.data.pageInfo.hasNext—false
路径中的 [0] 表示数组下标;开启「数组主键」后显示为 [id=1001],元素挪位置也不会误报。

本工具能做什么

按结构(而非文本)递归比较两份 JSON,高亮新增、删除、值变更、类型变更,支持忽略键顺序、忽略数组顺序、按主键匹配数组元素、忽略大小写与空白,输出 JSON Patch。

✓结构级递归比较
✓新增/删除/值变更/类型变更四类统计
✓差异清单 + 左右对照 + JSON Patch 三视图
✓数组主键配对 / 忽略顺序 / 忽略字段
✓JSON Patch (RFC 6902) 输出

适用场景

  • 后端接口返回数据格式化查看
  • 前后端联调时快速校验 JSON
  • 文档和代码中的 JSON 整理美化

常见问题

和用文本 diff 工具比 JSON 有什么区别?

文本 diff 会因为键顺序、缩进、末尾换行不同而报出一堆假差异。本工具先 JSON.parse 成对象再递归比较,只关心「哪个路径的值变了」,键顺序与格式完全不影响结果。

数组元素顺序变了,怎么避免整片报差异?

两个办法:一是勾选「忽略数组顺序」,此时按内容做集合比较,只报真正多出来/少掉的元素;二是填写「数组主键」(如 id),工具会按主键把左右元素配对,再逐个比字段,路径显示为 list[id=1001].price,定位最精确,推荐用于列表接口回归。

时间戳、traceId 这种每次都变的字段能忽略吗?

可以。在「忽略字段」里填 timestamp,traceId,data.updateTime,逗号分隔。支持点号路径,也支持只写末级键名(此时所有层级的同名键都会被忽略)。

「值变更」和「类型变更」为什么要分开统计?

类型变更是更危险的信号。"price": 299 改成 "price": "299"、或者 null 变成 [],值看着差不多,但前端反序列化、Java 实体映射会直接抛异常。所以本工具把它单列一档,看到这一档非 0 就该找上游确认。

大文件会不会卡?数据安全吗?

几千个字段的响应体在浏览器里递归比较是毫秒级的。所有解析与比较都在本地完成,页面没有任何上报接口,敏感数据不会离开你的电脑。

⚠️
免责声明
  • 本工具为纯前端实现,输入内容仅在你的浏览器本地处理,不上传、不存储于服务器。
  • 结果仅供开发调试参考。对于超长文本、特殊编码、非标准格式或极端边界输入,可能存在解析偏差或精度损失。
  • 请勿在本工具中处理生产环境密钥、个人敏感信息或涉密数据。因浏览器插件、剪贴板、共享设备等本站无法控制的环节导致的泄露,本站不承担责任。
  • 重要数据请自行备份并二次校验,勿将本工具输出直接用于生产环境。
  • 在法律允许的范围内,本站不对因使用或依赖本工具输出结果而产生的任何直接或间接损失承担责任。继续使用即表示你已理解并接受本声明。
发现结果有误?欢迎 反馈给我们,我们会尽快核实修正 · 详见 《隐私声明》