Developer Utility

JSON Diff 比较工具

比较两份 JSON 数据,快速查看新增、删除和变更的值,适合检查 API 响应、配置文件和测试数据差异。

JSON 结构比较 按 JSON 路径检查对象、数组和嵌套字段的结构差异与值变化。
变更分类 区分新增、删除、变更和相同项目,快速掌握 API 响应差异。
格式化、复制、下载 支持 JSON 自动格式化、复制比较结果和下载文本报告。

JSON 输入

请输入要比较的原始 JSON 和变更后 JSON。

基于路径比较 通过 root.user.profile.name 和 root.items[0].price 等 JSON 路径显示变化位置。
检查类型差异 检测字符串、数字、布尔值、null、对象和数组之间的类型变化。
原始键 0 项 变更后键 0 项 等待比较

比较结果

查看新增、删除和变更的 JSON 路径及对应值。

待机中
0 新增
0 删除
0 变更
0 相同
请输入两份 JSON 数据后点击比较按钮。

JSON 比较方式

比较结果不是简单的字符串比较,而是解析 JSON 结构后按路径和值进行显示。

新增的值

仅存在于变更后 JSON 中的字段或数组项,适合检查新增 API 字段或新配置值。

删除的值

原始 JSON 中存在但在变更后 JSON 中消失的字段,可用于检查缺失字段或删除的配置。

变更的值

路径相同但值或类型不同的项目,适合检查版本、响应或配置变更。

使用指南

按路径检查 JSON 的值、类型和数组差异

粘贴两份 JSON,比较新增、删除和更改的字段。对象的键顺序和缩进不影响结果,数组则按索引比较。适合检查 API 响应和配置文件的变化。

适用人群

  • 检查 API 响应的开发者
  • 对比配置版本的测试人员

使用场景

  • 确认字段是否遗漏或新增。
  • 区分数字与字符串的类型变化。

从输入到检查结果

  1. 1

    分别粘贴原始 JSON 和修改后的 JSON。

  2. 2

    选择是否显示相同项及类型信息。

  3. 3

    开始比较,按 root 路径检查差异。

  4. 4

    修改输入后重新比较,再复制或下载报告。

使用示例 1

数字与字符串

输入
原始:{"version":1} 修改:{"version":"1"}
结果
root.version:1 处更改

数字 1 与字符串 "1" 不同。关闭类型信息只隐藏标签,不会忽略类型差异。

使用示例 2

数组顺序

输入
原始:{"items":["A","B"]} 修改:{"items":["B","A"]}
结果
root.items[0] 和 root.items[1]:2 处更改

数组按位置比较,不会自动按 ID 匹配元素。

计算与处理原理

使用 JSON.parse 解析后递归比较。对象检查自身的键,数组检查同一索引,基本值进行严格比较。包含句点等特殊字符的键显示为 root["a.b"],以免与嵌套路径混淆。比较时每份输入最多 500,000 个字符,嵌套深度最多 100 层。格式化只调整缩进,不对键排序。

限制与注意事项

  • 重复键只保留解析后的最后一个值,工具不报告重复键。
  • 超过 JavaScript 数字精度范围的整数可能在解析时失真;需要精确保留的 ID 应使用字符串。
  • 新增或删除一个对象可能记为一项,不等于其中所有子字段的数量。
  • 不提供 JSON Schema、业务规则或 API 兼容性验证。
数据处理

输入在浏览器内处理,不上传或保存到 win-j 服务器。复制和下载的报告可能包含输入值,分享前请检查内容。

常见问题

键顺序不同会算作更改吗?

不会。相同对象键和值的顺序或缩进不同,不会产生差异。

关闭类型信息会把数字和字符串视为相同吗?

不会。该选项只控制报告中的类型标签,比较仍区分类型。

为什么插入一个数组元素会出现多处更改?

比较按索引进行,前面的插入会使后续元素移动,从而产生多处位置差异。