JSON 工具

JSON 对比— 看清字段真正发生的变化

粘贴两份 JSON,停止输入后自动更新结果;关闭自动比较后,可手动点击对比。

JSON 对比

+ 新增: 2− 删除: 1修改: 7

已更新

1 / 10

此视图只读:按当前比较规则统一排版并对齐记录,隐藏忽略路径。原文保持不变。

− 原始 JSON/users/0/id
+ 修改后 JSON/users/0/id

正在加载对比视图…

{
  "users": [
    {
      "id": 1,
      "name": "Ada",
      "role": "reader"
    },
    {
      "id": 2,
      "name": "Lin",
      "role": "editor"
    }
  ],
  "version": 1,
  "updatedAt": "2026-09-01"
}
{
  "users": [
    {
      "id": 2,
      "name": "Lin",
      "role": "admin"
    },
    {
      "id": 1,
      "name": "Ada",
      "role": "reader"
    },
    {
      "id": 3,
      "name": "Sam",
      "role": "reader"
    }
  ],
  "updatedAt": "2026-09-10",
  "active": true
}

输入仅保留在当前浏览器标签页,不上传,也不持久化保存。

结构详情 (10)
  • 根节点
    • users
      • 0
        • 修改

          原始 JSON /users/0/id

          1

          修改后 JSON /users/0/id

          2
        • 修改

          原始 JSON /users/0/name

          "Ada"

          修改后 JSON /users/0/name

          "Lin"
        • 修改

          原始 JSON /users/0/role

          "reader"

          修改后 JSON /users/0/role

          "admin"
      • 1
        • 修改

          原始 JSON /users/1/id

          2

          修改后 JSON /users/1/id

          1
        • 修改

          原始 JSON /users/1/name

          "Lin"

          修改后 JSON /users/1/name

          "Ada"
        • 修改

          原始 JSON /users/1/role

          "editor"

          修改后 JSON /users/1/role

          "reader"
      • 新增

        原始 JSON

        不存在

        修改后 JSON /users/2

        {"id":3,"name":"Sam","role":"reader"}
    • 删除

      原始 JSON /version

      1

      修改后 JSON

      不存在
    • 修改

      原始 JSON /updatedAt

      "2026-09-01"

      修改后 JSON /updatedAt

      "2026-09-10"
    • 新增

      原始 JSON

      不存在

      修改后 JSON /active

      true

接口升级后,返回字段的排列可能全变了,真正需要核对的却只有一个价格或状态。JSON 比较按数据结构定位变化,重新缩进不会让整份响应都变成差异。JSON 对比只看键和值,不看排版。

先试用示例,再把数组切换为按主键匹配:同一个用户换了位置,就不会被误认为另一个用户。需要做 JSON 比对 或排查 JSON 差异时,可先排除每次请求都会变化的时间戳。

用 JSON 对比找出真正值得关注的变化

记录换了顺序,仍然对齐同一条数据

接口可能把同一批记录按新顺序返回。只要每个对象都有唯一的 id,按主键对比就会先对齐记录,再检查字段:权限的修改仍会显示,单纯重排不会变成一串无关的差异。如果列表顺序本身有业务含义,则保留按位置对比。

相同形状的标识连接左右重排后的记录卡片,其中一处字段变化以琥珀色突出。

排除易变字段,集中检查业务变化

每次刷新的 updatedAt 可能掩盖你真正想检查的配置变化。将 /updatedAt 加入忽略路径后,该字段及其子节点不再参与对比,其他差异仍然保留。这里使用精确 JSON Pointer 路径,请只排除你明确不需要检查的分支。

两棵数据树中的时间戳字段淡化显示,另一条分支上的实际变化被突出标记。

三步完成一次差异检查

01

放入修改前后的数据

将有效 JSON 分别粘贴到左右编辑器,也可以加载示例熟悉结果树。默认开启自动对比,停止输入片刻后即可看到更新结果。

02

确定记录如何对应

有序列表保留按位置对比;对象数组可选择按主键,并填写 id 等唯一属性。需要排除时间戳时,在忽略路径中逐行输入 /updatedAt 等精确路径。

03

查看差异并保存报告

切换到「查看对比」,红色显示删除、绿色显示新增。用上一处和下一处浏览变化,或展开结构详情查看原始路径,再复制或下载报告。

围绕字段审查差异

可展开的差异树

按对象和数组层级展开受影响的分支,同时查看原值与新值。每项附有 JSON Pointer;数组主键匹配后,左右各自保留真实索引路径。

数组比较策略可见

默认按位置比较,适合顺序有意义的列表。选用 id 等直接属性匹配对象时,仅调整排列顺序不会产生修改;实际字段变化仍会逐项列出。

携带比较规则的报告

复制或下载 JSON 报告,包含增删改统计、排除路径及数组选项。前后值保存为 JSON 原文字符串,后续读取报告也不会把长整数悄悄舍入。

比较规则与边界

严格解析,保持类型差异
不接受注释、尾随逗号或重复对象键。字符串与数字不同,null 与缺失字段不同。1、1.0 等等值数字写法视为相同,比较过程不转浮点数。
主键必须有效且唯一
主键是对象上的直接属性,每个数组内必须为唯一字符串或数字。缺失、重复或对象与基本值混合时会报错;不含对象的数组仍按位置比较。数字 1 与字符串 "1" 不是同一主键。
忽略路径包含整个子树
每行填写一个精确 JSON Pointer,如 /updatedAt;键名中的 / 写成 ~1,~ 写成 ~0。不支持通配符或 JSONPath。主键模式下,只要左右任一真实索引路径命中,就忽略这一对分支。
统计按变化分支计数
整棵子树新增或删除只计一次,类型整体替换也计一次。不会生成移动操作,下载文件是审查报告,不能作为 RFC 6902 补丁直接应用。 若内部有排除路径,新增或删除的容器会展开,只统计未排除的子项。
有明确的处理上限
每侧最多 500,000 个 UTF-16 代码单元、50,000 个节点及 100 层深度,单个数字最多 1,000 字符。超过 5,000 项差异会停止且不提供部分报告。树视图每次显示 100 项,导出包含全部结果。

JSON 对比常见问题

如何比较两份 JSON 数据?

把原始与新版本分别粘贴到两侧,默认在停止输入约 400ms 后自动比较。关闭自动比较后使用对比按钮;结果待更新时不能复制或下载旧报告。

结构对比与文本对比有什么不同?

文本对比关注行和字符,这里关注字段是否存在、类型与值是否改变。对象键序和字符串外的空白不会影响结果,字符串内部的空格仍有意义。

对象键顺序变化会被标记吗?

不会。对象按键名匹配,因此仅重排键或改变缩进,增删改数量都保持为零。

如何处理数组顺序变化?

默认按索引,重排会产生差异。对象数组可选择按唯一主键匹配;普通字符串或数字数组仍按位置比较,不会自动当成集合。

很大的整数能准确比较吗?

可以。数字以原文保存,按十进制精确值比较;9007199254740992 与 9007199254740993 不会误判相同。报告中的值是原文字符串。

发现对比结果不符合预期?

用 JSON 对比看清字段的变化

载入示例,在按位置和按主键之间切换,看 JSON 对比怎么把数组重排的噪音去掉。