JSON Diff
免费在线 JSON Diff 工具,左右对比两个 JSON 对象,高亮显示新增、删除和修改的字段。对比前自动格式化并做逐行、逐字符比对,实时统计增删改数量,提供文本与语义两种视图,适合 API 接口联调、配置文件版本比对和自动化测试数据排查。
免费在线 JSON Diff 工具,左右对比两个 JSON 对象,高亮显示新增、删除和修改的字段。对比前自动格式化并做逐行、逐字符比对,实时统计增删改数量,提供文本与语义两种视图,适合 API 接口联调、配置文件版本比对和自动化测试数据排查。
将两个 JSON 文本分别粘贴到左右输入框中,工具会先自动格式化,再进行逐行、逐字符的深度比对。新增的内容以绿色高亮,删除的以红色高亮,修改的行同时显示新旧值并高亮变化的字符,帮助你瞬间定位数据差异。
不需要。工具在对比前会自动把左右两侧的 JSON 解析并统一格式化(2 空格缩进),因此即使两份 JSON 的缩进、空格、换行完全不同,只要数据内容一致就不会产生无意义的差异。这相当于自动忽略了空白字符的干扰。
文本视图按格式化后的行逐行对比,直观展示每一行的增删改,适合快速浏览整体变化;语义视图更侧重按 JSON 的结构和字段进行对比,帮助你从数据含义层面理解哪些字段发生了变化。两种视图可随时一键切换。
会。工具按格式化后的内容顺序比对,数组元素顺序不同会显示为差异。如果你只关心内容是否一致而不在意顺序,建议先用 JSON 格式化工具的「键名排序」或对数组排序后再来对比,即可避免顺序造成的干扰。
非常适合以下场景:1) API 联调:对比实际接口返回与预期 Mock 数据的差异;2) 配置管理:比对不同环境(开发/生产)的配置文件差异;3) 自动化测试:作为测试断言的辅助工具,快速排查数据不一致问题;4) 版本升级:对比第三方 API 升级前后返回结构的变更。
JSON 格式化是将难读的 JSON 整理成易读的层级结构,而 JSON Diff 是对比两个 JSON 之间的差异。两者经常配合使用:本工具其实已经内置了格式化步骤,会在对比前自动美化两侧内容,让你专注于差异本身。
可以。工具支持将当前左右两侧的内容压缩编码进 URL,生成可分享链接,对方打开即可看到相同的对比场景,无需上传服务器。你也可以一键复制任意一侧的内容用于代码审查或问题追踪。
可以。工具支持多标签页对比,你可以在不同标签中分别粘贴不同的 JSON 对进行比较,标签之间互不干扰,方便同时排查多个接口或多份配置的差异。
会。底部状态栏会实时统计新增、删除、修改三类差异的数量,一眼就能看出改动规模。如果两份 JSON 完全一致,会显示「完全相同」的提示。
不会。所有格式化和差异比对都完全在浏览器本地运行,数据不会上传到任何服务器。即使对比包含密钥、Token 或用户隐私的接口返回值也很安全,关闭页面后数据即被清除。
JSON Diff 是指对两份 JSON 数据进行差异比对,找出它们之间新增、删除和被修改的字段。在日常开发中,我们经常需要知道两个 JSON「到底哪里不一样」:接口升级前后返回结构变了什么、两个环境的配置差在哪、自动化测试的实际结果和预期基准偏差在哪个字段。人工逐行核对既慢又容易漏,JSON Diff 工具能把差异自动高亮出来。
JSON 差异比对通常有两种思路。一种是「文本差异」(textual diff):把 JSON 格式化成规范的多行文本后,按行做类似 Git diff 的比较,直观展示每一行的增删改。另一种是「语义/结构差异」(structural diff):把 JSON 解析成树形结构,按字段路径(如 user.address.city)逐一比对值和类型,不受字段书写顺序、缩进等排版因素影响。本工具同时提供文本视图和语义视图,可按需切换。
为什么要先格式化再对比?因为同一份数据可能有完全不同的排版(一行 vs 多行、2 空格 vs 4 空格),如果直接按原文本比对,会产生大量由排版差异造成的「假差异」。本工具在对比前会自动把两侧 JSON 解析并统一格式化,从而消除空白字符的干扰,让你只看到真正有意义的数据变化。
需要注意的是,JSON 中对象的键顺序在语义上不重要({"a":1,"b":2} 与 {"b":2,"a":1} 等价),但数组的元素顺序是有意义的([1,2] 与 [2,1] 不同)。因此当你只关心数组内容是否一致、不在意顺序时,建议先对数组排序或对键名排序后再对比,避免顺序变化被误判为差异。
本工具的所有格式化与比对都在浏览器本地完成,数据不会上传服务器;同时支持字符级高亮、增删改数量统计、多标签同时对比以及通过 URL 分享对比场景,适合接口联调、配置比对、测试断言和 Code Review 等场景。
对比两份 JSON 时,差异通常可归为以下几类,理解它们有助于快速判断改动性质。
| 差异类型 | 标记 | 说明 |
|---|---|---|
| 新增 (Added) | + 绿色 | 新版本中出现、旧版本中没有的字段或数组元素。 |
| 删除 (Removed) | − 红色 | 旧版本中存在、新版本中被移除的字段或数组元素。 |
| 修改 (Modified) | ~ 黄色 | 字段仍在,但值发生了变化,会同时显示新旧值并高亮变化字符。 |
| 类型变更 | ~ 黄色 | 字段值的类型改变,如数字变字符串、对象变数组,属于修改的一种。 |
| 无变化 | 普通 | 两侧完全一致的行,不做特殊标记。 |
为了得到干净、有意义的对比结果,可视情况先做以下预处理,避免假差异。
| 场景 | 建议操作 |
|---|---|
| 键顺序不同 | 对键名排序后再对比(或使用语义视图,从字段层面比较)。 |
| 数组顺序无所谓 | 先对数组按内容排序,避免顺序变化被判为差异。 |
| 缩进/空白不同 | 无需处理,本工具会自动格式化统一排版。 |
| 含大整数 ID | 确认两侧都用字符串传输大整数,避免精度丢失导致对不上。 |
| 一侧不合法 | 先用 JSON 校验/修复工具处理成合法 JSON 再对比。 |
本工具所有 JSON 格式化和差异比对都完全在你的浏览器本地运行,数据不会上传到任何服务器,也不会被记录或缓存到远端。即使对比包含密钥、Token、用户信息的接口返回值也很安全,关闭或刷新页面后数据即被清除。
最常见原因是数组元素顺序不同,或字符串里存在肉眼难辨的差异(如全角/半角空格、大小写、末尾空格、换行符 \r\n 与 \n)。可先对数组或键名排序后再对比;本工具已自动格式化,通常能排除缩进和普通空白造成的假差异。
说明该侧内容不是合法 JSON(如缺引号、多尾逗号、含注释、括号未闭合)。请先用 JSON 校验/修复工具处理成合法 JSON,再回来对比。
多半是两份数据的键顺序或数组顺序整体不同,导致逐行错位。建议先统一排序(对象按键名排序、数组按内容排序)再对比,或改用语义视图从字段层面查看真正变化的字段。
JSON 数字按 IEEE 754 双精度解析,超过 2^53 的大整数(雪花 ID、订单号)会丢精度,导致两侧看似相同实则被解析成不同的值。传输大整数时应用字符串包裹,如 "id": "9007199254740993"。
一侧是转义写法(\u4e2d\u6587)、另一侧是明文中文时,格式化后可能呈现不同。两者语义相同但文本不同会被标为差异,可在生成端统一是否转义(如 Python 的 ensure_ascii=False)。