数据差异对比
结构化对比 JSON(新增/删除/变更路径),或逐行对比任意文本,全部在浏览器本地完成
原始版本
修改版本
对比结果
使用提示
- JSON 模式按数据结构对比:键的顺序和格式差异会被忽略,只报告真正的值变化。
- 文本模式逐行对比:绿色为新增行,红色为删除行,灰色为未变行。
- 新增 删除 变更
- 使用“交换”反转对比方向 —— 新增变为删除,删除变为新增。
- 在任意输入框按 Ctrl/Cmd + Enter 即可触发对比。
两种对比模式,自动选择
Data Diff 从你粘贴的内容出发:当两侧都能解析为 JSON 时自动切换到结构化对比;其他内容则逐行对比。你也可以用结果区上方的标签页手动锁定模式。
JSON 结构对比报告什么
- 新增(Added)—— 只存在于修改侧的键或数组下标,附带值的预览。
- 删除(Removed)—— 只存在于原始侧的键或数组下标。
- 变更(Changed)—— 同一路径在两侧取值不同,显示为 变更前 → 变更后。
- 类型变更(Type changed)—— 该路径在一侧是对象,另一侧是标量或数组。
- 每条记录都带路径,使用与 JSON/XML/YAML Inspector 相同的 $.store.books[0].title 记法,可直接定位到源数据。
需要时的文本对比
按行对比会带行号高亮每一处新增和删除的行。适用于代码、日志、配置文件和任意文本 —— 包括“格式变了但数据没变”的 JSON。
示例:JSON 模式能看到而文本模式看不到的
下面两段代码只有键的顺序和缩进不同。文本对比几乎把每一行都算作变更;JSON 结构对比则正确地报告零差异。
{
"name": "web",
"version": "1.0"
}
{
"version": "1.0",
"name": "web"
}
这个工具在工作流中的位置
Data Diff 是工作台中的“对比”环节。其他工具的文档都可以一键发送到这里:
常见问题解答
关于 Diff Formatter 格式化的常见问题解答
是的,完全免费,无需注册。所有处理都在你的浏览器中完成。
任何文本内容都可以:代码、配置文件、JSON、XML、纯文本或其他任何文本格式。
JSON 对比会解析两侧并按数据结构比较,因此键的重排和格式差异不会被报告为变更。文本对比逐行比较原始文本,更适合代码和日志。
可以。点击“交换”按钮反转原始与修改文本,新增即变为删除,反之亦然。
使用 Myers 差分算法 —— 与 Git 进行文本对比所用的算法相同,保证结果准确且最小化。
统一 diff 格式(-u),由 git diff、diff -u 以及所有主流版本控制系统生成 —— 包含一个或多个文件段落,每段都有 ---/+++ 头部、@@ hunk 标记以及 +/- 行与上下文行。GNU diffutils 文档详细说明了该格式的确切规范;本格式化工具会重新排版各个 hunk,并附上对齐的行号和语法着色。
@@ -3,7 +3,8 @@ 表示:在旧文件中,从第 3 行开始显示 7 行;在新文件中,对应的部分从第 3 行开始,共占 8 行。读取这些计数即可一眼看出变更规模 —— 这里是新增了一行。格式化工具会原样保留这些标记,因为 patch(1) 和 git apply 都依赖它们。
不能 —— 它只负责排版和解读补丁,并不会应用它们。要应用补丁,请使用 git apply 或 patch -p1;要合并存在冲突的 hunk,请使用你所用 VCS 的合并工具。排版功能被有意设计为只读,因此你可以放心粘贴任何补丁,包括包含被拒绝或冲突 hunk 的补丁,以便清晰审阅。