ZH
我的工具

JSON 比较(JSON Diff)

忽略键顺序,按结构比较两个 JSON 文档:列出新增、删除和修改的值及其路径,支持数字容差,并可按 id 匹配数组元素。

数组比较方式
按键匹配数组中的对象时使用,例如 id、sku 或 email。
相差小于该值的数字视为相等。0 表示必须完全相同。
我的工具 →
广告

把 JSON 当作纯文本比较会产生很多干扰:键顺序变了或缩进不同,即使数据完全相同也会显示为改动。这个工具改为比较解析后的结构:忽略键顺序,每处差异都连同路径列出,并提供选项来应对常见的误报——数字的舍入、字母大小写,以及元素位置发生移动的数组。

使用方法

  1. 把原始 JSON 粘贴到左边,把修改后的版本粘贴到右边。
  2. 如果数组里是带 id 的记录,请选择按键字段匹配对象并输入字段名。
  3. 可选:设置数字容差,或忽略字符串的大小写。
  4. 查看路径与变化的表格;下方的逐行差异以文本形式显示同样的数据。

计算公式

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,请使用容差。

我的文件会被上传吗?

不会。两份文档都在你的浏览器中解析和比较。

资料来源

最后更新:

引用此工具
APA

kakaoCalc. (2026, November 8). JSON 比较(JSON Diff). https://kakao.mobile/zh/tools/json-diff-tool/

MLA

“JSON 比较(JSON Diff).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/json-diff-tool/.

广告