JSON Diff
免费在线 JSON Diff 工具,左右对比两个 JSON 对象,高亮显示新增、删除和修改的字段。对比前自动格式化并做逐行、逐字符比对,实时统计增删改数量,提供文本与语义两种视图,适合 API 接口联调、配置文件版本比对和自动化测试数据排查。
相关推荐
关于 JSON Diff(JSON 对比)
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 等场景。
适用场景
- 数据库迁移抽样对比:数据分析师从 MongoDB 向 Elasticsearch 迁移数据后,把同一条记录在迁移前后导出的 JSON 逐字段 diff,确认无字段丢失或类型变更。
- 日志采集格式升级:运维升级 Filebeat 采集模板后,对比新旧模板同一分钟的日志 JSON 聚合输出,确保字段名未破坏下游 Kibana 告警规则。
- Swagger 契约与实际响应对齐:前端在接口联调时把 Swagger 导出的 JSON 契约与后端真实响应的 JSON 做 diff,快速定位字段命名或类型不一致。
- i18n 多语言资源校对:前端工程师更新翻译文件时,把改动前后的中英文 locales JSON 对比,避免遗漏或误删翻译 key。
- 跨格式转换一致性校验:后端将 YAML 配置转 JSON 再转回 YAML 后,用 diff 工具对比两份 YAML 是否字节级一致,避免来回转换损耗。
- 客服聊天记录 ETL 校验:数据分析师对比原始导出的聊天 JSON 与脱敏清洗后的 JSON,校验 ETL 脚本未误删有效字段。
- 缓存序列化方案升级:后端切换 Redis 序列化方式时,对比同一对象在新旧两种方案下序列化得到的 JSON 差异,确认对历史数据向后兼容。
- 雪花 ID 精度问题排查:后端在跨语言联调时把数据库导出 JSON 与接口响应 JSON 对比,定位被 JavaScript 截断的大整数 ID 字段。
- 中文字段 Unicode 转义排查:数据团队对比 Python ensure_ascii=True 与 ensure_ascii=False 两种序列化结果,确认中文字段不会被双重转义。
- 数据库 Schema 演进对比:后端做表结构迁移时把 mysqldump 导出的 JSON 与目标 Schema 定义 JSON 对比,识别冗余字段或缺失列。
- OpenAPI 破坏性变更检测:API 维护者在版本迭代时把新旧两版 JSON-Schema 对比,直观看到字段新增、删除或类型收窄等破坏性变更。
- 前端 LocalStorage 状态回滚:前端开发在调试用户配置时把 localStorage 中持久化的状态 JSON 与出厂默认值对比,定位用户修改了哪些设置以便必要时回滚。
使用方法
- 将两个 JSON 内容分别粘贴到左右输入框(工具会自动格式化)
- 选择文本视图或语义视图,查看红绿黄高亮标记的差异
- 结合底部的增/删/改统计确认改动规模
- 一键复制内容或生成分享链接与他人协作排查
功能特点
- 深度差异比对:先自动格式化再逐行、逐字符递归对比,精准识别新增、删除及修改
- 可视化高亮:红/绿/黄三色清晰标记删除、新增、修改,左右同步滚动查看
- 字符级高亮:修改的行内会进一步高亮发生变化的具体字符,定位更精细
- 自动格式化:对比前统一美化两侧 JSON,自动消除缩进和空白差异的干扰
- 文本 / 语义双视图:按行文本对比或按结构语义对比,随需一键切换
- 差异统计:底部实时统计增/删/改数量,完全一致时提示「完全相同」
- 多标签对比:多组 JSON 同时比较,互不干扰
- 分享与交换:一键生成分享链接、左右内容一键互换、任意一侧一键复制
- 隐私安全:全程浏览器本地运行,数据零上传,处理含密钥的返回值也放心
常见问题
怎么快速找出两个 JSON 文件之间的差异?
将两个 JSON 文本分别粘贴到左右输入框中,工具会先自动格式化,再进行逐行、逐字符的深度比对。新增的内容以绿色高亮,删除的以红色高亮,修改的行同时显示新旧值并高亮变化的字符,帮助你瞬间定位数据差异。
对比前需要先手动格式化 JSON 吗?
不需要。工具在对比前会自动把左右两侧的 JSON 解析并统一格式化(2 空格缩进),因此即使两份 JSON 的缩进、空格、换行完全不同,只要数据内容一致就不会产生无意义的差异。这相当于自动忽略了空白字符的干扰。
文本视图和语义视图有什么区别?
文本视图按格式化后的行逐行对比,直观展示每一行的增删改,适合快速浏览整体变化;语义视图更侧重按 JSON 的结构和字段进行对比,帮助你从数据含义层面理解哪些字段发生了变化。两种视图可随时一键切换。
数组中的元素顺序不同会被判定为差异吗?
会。工具按格式化后的内容顺序比对,数组元素顺序不同会显示为差异。如果你只关心内容是否一致而不在意顺序,建议先用 JSON 格式化工具的「键名排序」或对数组排序后再来对比,即可避免顺序造成的干扰。
这个工具适合哪些具体的开发测试场景?
非常适合以下场景:1) API 联调:对比实际接口返回与预期 Mock 数据的差异;2) 配置管理:比对不同环境(开发/生产)的配置文件差异;3) 自动化测试:作为测试断言的辅助工具,快速排查数据不一致问题;4) 版本升级:对比第三方 API 升级前后返回结构的变更。
JSON Diff 和 JSON 格式化有什么区别?
JSON 格式化是将难读的 JSON 整理成易读的层级结构,而 JSON Diff 是对比两个 JSON 之间的差异。两者经常配合使用:本工具其实已经内置了格式化步骤,会在对比前自动美化两侧内容,让你专注于差异本身。
对比结果可以分享或复制吗?
可以。工具支持将当前左右两侧的内容压缩编码进 URL,生成可分享链接,对方打开即可看到相同的对比场景,无需上传服务器。你也可以一键复制任意一侧的内容用于代码审查或问题追踪。
可以同时进行多组对比吗?
可以。工具支持多标签页对比,你可以在不同标签中分别粘贴不同的 JSON 对进行比较,标签之间互不干扰,方便同时排查多个接口或多份配置的差异。
对比会统计出改了多少处吗?
会。底部状态栏会实时统计新增、删除、修改三类差异的数量,一眼就能看出改动规模。如果两份 JSON 完全一致,会显示「完全相同」的提示。
对比的数据会上传到服务器吗?
不会。所有格式化和差异比对都完全在浏览器本地运行,数据不会上传到任何服务器。即使对比包含密钥、Token 或用户隐私的接口返回值也很安全,关闭页面后数据即被清除。
故障排查
明明数据一样,却提示有差异
最常见原因是数组元素顺序不同,或字符串里存在肉眼难辨的差异(如全角/半角空格、大小写、末尾空格、换行符 \r\n 与 \n)。可先对数组或键名排序后再对比;本工具已自动格式化,通常能排除缩进和普通空白造成的假差异。
对比一侧报解析错误 / 无法对比
说明该侧内容不是合法 JSON(如缺引号、多尾逗号、含注释、括号未闭合)。请先用 JSON 校验/修复工具处理成合法 JSON,再回来对比。
差异太多、几乎每行都标红标绿
多半是两份数据的键顺序或数组顺序整体不同,导致逐行错位。建议先统一排序(对象按键名排序、数组按内容排序)再对比,或改用语义视图从字段层面查看真正变化的字段。
大数字对不上(如 ID 末位不同或变成科学计数法)
JSON 数字按 IEEE 754 双精度解析,超过 2^53 的大整数(雪花 ID、订单号)会丢精度,导致两侧看似相同实则被解析成不同的值。传输大整数时应用字符串包裹,如 "id": "9007199254740993"。
中文显示为 \uXXXX 导致看起来不一致
一侧是转义写法(\u4e2d\u6587)、另一侧是明文中文时,格式化后可能呈现不同。两者语义相同但文本不同会被标为差异,可在生成端统一是否转义(如 Python 的 ensure_ascii=False)。
JSON 差异类型速查表
对比两份 JSON 时,差异通常可归为以下几类,理解它们有助于快速判断改动性质。
| 差异类型 | 标记 | 说明 |
|---|---|---|
| 新增 (Added) | + 绿色 | 新版本中出现、旧版本中没有的字段或数组元素。 |
| 删除 (Removed) | − 红色 | 旧版本中存在、新版本中被移除的字段或数组元素。 |
| 修改 (Modified) | ~ 黄色 | 字段仍在,但值发生了变化,会同时显示新旧值并高亮变化字符。 |
| 类型变更 | ~ 黄色 | 字段值的类型改变,如数字变字符串、对象变数组,属于修改的一种。 |
| 无变化 | 普通 | 两侧完全一致的行,不做特殊标记。 |
对比前建议做的预处理
为了得到干净、有意义的对比结果,可视情况先做以下预处理,避免假差异。
| 场景 | 建议操作 |
|---|---|
| 键顺序不同 | 对键名排序后再对比(或使用语义视图,从字段层面比较)。 |
| 数组顺序无所谓 | 先对数组按内容排序,避免顺序变化被判为差异。 |
| 缩进/空白不同 | 无需处理,本工具会自动格式化统一排版。 |
| 含大整数 ID | 确认两侧都用字符串传输大整数,避免精度丢失导致对不上。 |
| 一侧不合法 | 先用 JSON 校验/修复工具处理成合法 JSON 再对比。 |
Privacy & Security
本工具所有 JSON 格式化和差异比对都完全在你的浏览器本地运行,数据不会上传到任何服务器,也不会被记录或缓存到远端。即使对比包含密钥、Token、用户信息的接口返回值也很安全,关闭或刷新页面后数据即被清除。
Authoritative References
- JSON 压缩
- CSV 转 JSON
- JSON 转 CSV
- JSON Diff
- JSON Escape / Unescape
- JSON扁平化
- JSON 格式化
- JSON 生成器
- JSONPath 查询
- JSON 合并
- JSON 修复
- JSON Schema 校验
- JSON 排序
- JSON Stringify
- JSON 转 HTML
- JSON 转 Java
- JSON 转 Markdown
- JSON 转 SQL
- JSON 转 TOML
- JSON 转 TypeScript
- XML 转 JSON
- JSON 转 XML
- YAML 转 JSON
- JSON 转 YAML
- JSON 转 Python
- JSON 转 Go
- JSON 转 Rust
- JSON 转 Swift
- JSON 转 C#
- JSON 转 C++
- JSON 转 PHP