JSON 对比
比较两段 JSON,列出新增、删除、修改的 JSONPath 与统计;数组既可以按索引比较,也可以按指定 id 键比较,可切换只看差异或看全部。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
差异统计
请输入 JSON 文本
这个工具能做什么
- 接口返回结果对不上时,把改动前后的两份 JSON 贴进来,逐条看清哪个字段被改了、加了还是删了。
- 做配置迁移或版本对比:确认新旧配置文件除预期字段外没有其它意外改动。
- 排查数组里的元素增删:按 id 键比较时可以准确定位是哪一条记录新增或删除,而不是被索引错位误导。
- 写变更说明或提交记录:把差异清单直接复制出来,作为接口变更的凭证贴进文档或工单。
示例
输入
左侧 {"name":"UniKit","version":1,"list":[{"id":1,"title":"A"},{"id":2,"title":"B"}],"debug":true}
右侧 {"name":"UniKit","version":2,"list":[{"id":1,"title":"A"},{"id":3,"title":"C"}],"extra":null}输出
相同 $.name "UniKit"
修改 $.version 1 → 2
相同 $.list[0] {"id":1,"title":"A"}
修改 $.list[1].id 2 → 3
修改 $.list[1].title "B" → "C"
删除 $.debug true
新增 $.extra null
统计:新增 1 · 删除 1 · 修改 3 · 相同 2示例按索引比较数组。把数组比较方式切成「按 id 键」后,list 会变成 $.list[id=1] 相同、$.list[id=2] 删除、$.list[id=3] 新增,不会被索引错位干扰。
常见问题
数组按索引和按 id 键有什么区别?
按索引是逐个位置对比,数组中间插入一条会导致后面全部变成「修改」;按 id 键则用指定字段的值配对元素,能准确识别出新增和删除的是哪一条。数组元素是带唯一字段的对象时,优先用按 id 键,字段名可以自定义,默认是 id。
对象的键顺序不同会被当成差异吗?
不会。比较是结构化的:对象按键名匹配,键顺序无关;只有数组顺序敏感。所以 {"a":1,"b":2} 与 {"b":2,"a":1} 会被判为完全相同。
JSON 有语法错误时会怎样?
会明确指出是左侧还是右侧,并给出第几行第几列以及原因,例如内容意外结束、字符串缺少结束引号、JSON 结束后还有多余内容。工具不会去猜你想表达什么,修正后重新粘贴即可。
差异结果是路径 + 值的格式吗?
是。每一行是「类型 路径 值」,路径用 JSONPath 写法($.list[0].name,非标识符键写成 $["a-b"]),修改会显示成「旧值 → 新值」。切到「显示全部」还会列出没有变化的字段,方便确认哪些部分是一致的。
两份 JSON 会上传吗?
不会。解析、比较与渲染都在浏览器里完成,页面不发送网络请求,断网也能用;接口数据或配置内容不会被记录。
关键词:jsonjson 对比json diff比较 jsoncompare json差异json 比较array diff