什么是语义 Diff?
语义 Diff 是一种按数据的含义而非原始文本进行比较的方式。对 JSON 而言,若两个对象具有相同的键与值,即使属性顺序或空白不同,也会被视为相等。这样可以避免格式变动带来的干扰,只突出真实的数据差异。JSDiff 的 JSON 模式即进行语义比较,因此 {"a":1,"b":2} 与 {"b":2,"a":1} 会被视为相同。
语义 Diff 与文本 Diff
基于行的文本 diff 会在字节或行发生变化时报告差异。重排键、重新格式化或改变缩进都会显示为变更。而 JSON 的语义 diff 比较的是逻辑结构:只有新增、删除或修改的键与值会被高亮,特别适合 API 响应、配置文件等格式可能变化但含义重要的 JSON。
JSDiff 如何做语义 JSON Diff
在 JSDiff 上选择 JSON 模式即可对两个 JSON 文档进行语义对比。工具会解析两侧、规范化结构,并只高亮有意义的差异。如需字符级或行级对比,也可使用 行、词 或 字符 模式进行传统文本 diff。更多功能见 JSDiff 功能(英文)。