比较 JSON 的结构,而不是文本格式
快速理解两份 JSON 文档之间的差异,通过完整键路径查看新增、删除和类型变更,并灵活选择数组对比方式。
在工作流中使用 JSON 对比
除了浏览器中的单次检查,还可以在编辑器、终端、AI 助手或代码项目中进行可重复的审查。
终端与 JavaScript
在脚本和 CI 中运行对比,或将同一个结构化对比引擎集成到 JavaScript、TypeScript 项目。
语义对比与文本对比
语义对比先解析 JSON 值再进行比较,因此结果反映数据变化,而不只是展示形式的变化。
键顺序与格式
仅调整键顺序或空白字符不会产生语义差异。值和类型变化仍会连同路径一起显示。
{
"name": "Ada",
"active": true
}{"active":true,"name":"Ada"}数组与原始行
数组顺序是否重要取决于所选策略。需要检查精确的逐行编辑时,文本对比仍然有用。
[ "A", "B" ]
[ "B", "A" ]
输入会作为数据解析,而不会作为 JavaScript 执行;超出 JavaScript Number 安全范围的整数也会在解析时保留。
需要查看原始逐行差异? 了解 Git Diff 视图
第一次使用结构化对比? 阅读快速开始指南
根据数据含义选择对比选项
错误的数组策略可能隐藏移动,也可能把无害的重排报告为差异。请先明确位置和重复值在数据中的含义。
键大小写
仅当 Status 和 status 表示同一字段时忽略键大小写,否则不同的键可能被视为等价。
字符串值大小写
对规范化文本可忽略值大小写,但不要用于区分大小写的标识符、令牌或用户内容。
数字字符串
仅当 "42" 和 42 在数据模式中等价时,才把数字字符串视为数字。需要关注类型差异时请关闭此选项。
审查 JSON 变更的实际场景
通过结构化差异检查实际变化是否符合预期。结果可以说明两份输入有何不同,但不能判断哪一份文档才是正确的。
将 API 响应与测试夹具对照
比较 id 均为 101、但 status 从 "pending" 变为 "paid" 的两份响应,可单独定位该字段的变化。得出结论前,请先移除或规范化与本次检查无关的时间戳、请求 ID 等预期会变化的字段。
审查配置修改
比较依赖更新前后的 package.json,或检查两个版本的 tsconfig.json。当 compilerOptions.strict 从 false 变为 true 时,其路径会标出需要审查的设置,无关的格式调整不会增加干扰。
验证数据转换结果
比较同一条记录在 ETL 处理前后的内容。如果 total 从 "19.95" 变为 19.95,默认设置会报告类型变更。还应检查字段是消失还是被设为 null,并根据顺序是否具有业务含义来选择数组模式。
检查应用状态快照
保存某个操作前后的状态并比较快照,以定位意外更新。cart.items[0].quantity 这样的路径可将变更值与需要排查的 reducer、事件处理或同步逻辑联系起来。