跳到正文
SPCXTools

JSON 对比

快速查找两个 JSON 对象之间的差异,提供详细的逐节点路径对比。

本地运行——文件不会离开你的设备

正在加载工具…

如何使用JSON 对比

  1. 1将原始 JSON 粘贴到左侧面板,将修改后的 JSON 粘贴到右侧面板。
  2. 2工具会即时解析数据,并显示新增、删除和修改字段的摘要。
  3. 3如果想忽略数组元素的顺序进行对比,请勾选“忽略数组顺序”。
  4. 4查看详细的更改列表,其中会显示准确的 JSON 路径以及新旧值。
  5. 5点击“复制”按钮,将纯文本格式的差异报告复制到剪贴板。

快速、安全的 JSON 对比工具

在处理复杂的数据结构时,想要找出某个被修改的值或缺失的键往往非常繁琐。这款 JSON 对比工具旨在即时分析并高亮显示两个 JSON 数据之间的确切差异。您无需逐行排查数千行代码,即可获得一份清晰、结构化的变更报告。

由于该工具完全在您的浏览器中运行,因此它是一种绝对安全的在线 JSON 差异对比方式。您的数据绝不会被上传到服务器或存储在数据库中。您可以放心地粘贴内部 API 响应、客户数据或敏感的环境配置,完全不必担心数据泄露风险。

JSON 深度对比的工作原理

如果你要对比两个 JSON 文件,使用普通的纯文本差异对比工具往往会产生误报。纯文本工具是逐行对比数据的,如果修改后的 JSON 缩进不同,或者对象中的键(key)只是顺序发生了变化,文本对比工具就会将整个代码块标记为已修改。

本工具的原理则完全不同。它会将文本解析为真正的 JavaScript 对象,并对数据结构本身进行深度的递归对比。它会自动忽略空格、缩进以及对象键的顺序。例如,当 {"status": "ok", "code": 200} 变为 {"code": 200, "status": "ok"} 时,工具会判定两者完全一致。

当发现差异时,它会使用标准的点号和中括号语法生成变更的精确路径。例如,如果数组中的第三个标签发生了变化,工具会直接为你定位到 tags[2],而不是在庞大的文件中随便高亮某一行。

处理数组:严格匹配与忽略顺序

在 JSON 对比工具中,最常见的挑战之一就是处理数组。有时,数组中元素的顺序至关重要;而有时,数组只是一个无序列表,你只关心其内容是否一致。

默认情况下,本工具严格按索引对比数组。它会检查原数组的第一个元素是否与修改后数组的第一个元素匹配,以此类推。

如果勾选 忽略数组顺序 选项,工具的对比方式将会改变。它会在对比前对两个数组的内容进行序列化,并按字母顺序排序。这意味着,如果原数组是 ["apple", "banana"],而修改后的数组是 ["banana", "apple"],工具将显示没有任何差异。当对比来自不保证特定排序的数据库的 API 响应时,此功能非常实用。

常见应用场景

调试 API 响应。 当 API 接口突然失效时,对比正常和报错的响应数据是排查问题最快的方法。粘贴两份数据,即可直观查看键名是否被修改、数据类型是否从字符串变成了整数,或嵌套对象是否被删除。

检查配置文件。 现代应用高度依赖 JSON 配置文件,例如 package.json、tsconfig.json 或云部署模板。在提交更改前,使用本工具可精准核对更新了哪些依赖项或修改了哪些设置。

数据库记录审计。 MongoDB 等文档型数据库以类 JSON 结构存储数据。如果需要审计特定用户资料或文档的历史变更,将历史 JSON 导出数据与当前状态进行对比,即可获得清晰的字段新增、删除和修改轨迹。

理解输出结果

在两个面板中粘贴有效的 JSON 后,工具将生成对比摘要和详细的差异列表:

  • 新增 (+): 存在于修改后的 JSON 中但不存在于原始 JSON 中的键或数组项。这些内容会以绿色高亮显示。
  • 删除 (−): 存在于原始 JSON 中但在修改后版本中缺失的键或数组项。这些内容会以红色高亮显示。
  • 修改 (~): 在两者中都存在但值不同的键(例如,字符串被更新,或者布尔值从 true 变为 false)。这些内容会以黄色高亮显示,并同时展示新旧值。

如果您需要与同事分享对比结果或将其粘贴到 bug 报告中,可以使用 复制 按钮。这会复制一份清晰的纯文本摘要,包含所有发生更改的路径及其对应的值。

如需进一步处理数据,您可以先使用 JSON 格式化工具 整理杂乱的数据,或者在最终确定 JSON 结构后,使用 JSON 转 TypeScript 转换器生成类型定义。

常见问题

JSON对比工具如何处理数组?
默认情况下,数组严格按照索引顺序进行对比。如果勾选“忽略数组顺序”,工具会在对比前按内容对数组进行排序。当元素顺序无关紧要,但数据本身必须一致时,这个功能非常有用。
我的JSON数据会发送到服务器吗?
不会。所有的解析和对比都在您的浏览器中通过JavaScript本地完成。您的数据绝不会被上传,因此处理敏感的API响应、数据库导出或私人配置文件绝对安全。
如果我的JSON格式无效会怎样?
工具会在文本框下方显示错误信息,提示解析失败的位置。左右两侧都必须提供有效的JSON才能进行对比。
我可以互换原始和修改后的JSON吗?
可以,点击“交换”按钮即可立即切换左右面板。这会反转“新增”或“删除”内容的对比视角。
嵌套对象是如何对比的?
工具会递归遍历嵌套的对象和数组,并为发现的每个差异生成精确的路径(例如 "user.address.city" 或 "items[2].id")。
为什么要使用此工具,而不是标准的文本对比工具?
标准的文本对比是逐行对比文本。如果同一个JSON对象的键名顺序不同,文本对比会将其视为大量修改。而JSON对比工具会解析实际的数据结构,因此它能识别出 {"a":1, "b":2} 和 {"b":2, "a":1} 是完全相同的。