JSON 比较(JSON Diff)
忽略键顺序,按结构比较两个 JSON 文档:列出新增、删除和修改的值及其路径,支持数字容差,并可按 id 匹配数组元素。
把 JSON 当作纯文本比较会产生很多干扰:键顺序变了或缩进不同,即使数据完全相同也会显示为改动。这个工具改为比较解析后的结构:忽略键顺序,每处差异都连同路径列出,并提供选项来应对常见的误报——数字的舍入、字母大小写,以及元素位置发生移动的数组。
使用方法
- 把原始 JSON 粘贴到左边,把修改后的版本粘贴到右边。
- 如果数组里是带 id 的记录,请选择按键字段匹配对象并输入字段名。
- 可选:设置数字容差,或忽略字符串的大小写。
- 查看路径与变化的表格;下方的逐行差异以文本形式显示同样的数据。
计算公式
diff(L, R): different types → type change; objects → compare shared keys, list left-only keys as removed and right-only keys as added; arrays → by position or by key; numbers equal if |L − R| ≤ tolerance
路径使用与 JavaScript 和 JSONPath 相同的写法:$.stock.store、$.tags[2],按键匹配到的元素则是 $.items[id=7]。逐行差异会先对键排序,所以键顺序不会造成虚假的差异。
示例
对于示例台灯,工具找到 5 处差异:$.name 被修改("Desk lamp" → "Desk Lamp")、$.price 被修改(34.9 → 29.9)、$.tags[2] 新增("sale")、$.stock.store 被删除、$.color 新增。勾选忽略大小写后,名称的修改会消失,剩下 4 处。
常见问题
键的顺序重要吗?
不重要。按定义 JSON 对象是无序的(RFC 8259),所以 {"a":1,"b":2} 和 {"b":2,"a":1} 会被报告为相同。数组的顺序则很重要,除非你按键字段匹配元素。
怎样比较元素位置被调换过的数组?
选择按键字段匹配对象,并输入每个元素唯一的字段,例如 id。元素会按该值配对,因此移动元素不算改动,缺少或新增的元素会显示为删除或新增。
为什么 1.0 等于 1?
JSON 只有一种数字类型,所以 1、1.0 和 1e0 是同一个值。对于只因舍入而不同的值,例如 0.30000000000000004 和 0.3,请使用容差。
我的文件会被上传吗?
不会。两份文档都在你的浏览器中解析和比较。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/json-diff-tool/
引用此工具
kakaoCalc. (2026, November 8). JSON 比较(JSON Diff). https://kakao.mobile/zh/tools/json-diff-tool/
“JSON 比较(JSON Diff).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/json-diff-tool/.