数据差异对比

结构化对比 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 结构对比则正确地报告零差异。

A
{
  "name": "web",
  "version": "1.0"
}
B
{
  "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 的补丁,以便清晰审阅。

{-- * External Resources Component(#19 Phase 3b 内容佐证工程) * 工具页「权威引用」区块:RFC / W3C / WHATWG / ECMA / IANA / 官方规范站 / 官方语言文档 / Wikipedia。 * * - 接受 :slug 属性 → 经 config/tool-sources.php 家族矩阵渲染该工具的权威引用 * - slug 未命中映射时不渲染(无权威来源的工具静默跳过) * - 链接 title 保持英文(引用源专名);description 经 * common.resources.descriptions.{key} 本地化,lang 未命中回退英文(线上不裸奔) * - 链接保持 dofollow(rel="noopener noreferrer") * * @param string|null $slug --}}

相关工具