JSON Patch 生成器与应用器
在两份文档之间生成 RFC 6902 JSON Patch、把一个补丁应用到源文档,或运行一个 RFC 7386 合并补丁——全部在你的浏览器中完成。
JSON Patch 生成器完全在你的浏览器中运行。你粘贴的文档和补丁会在你的设备上进行差异比对和应用,绝不会上传到 ArrayKit。
打开 JSON 差异对比工具
关于 JSON Patch 生成器
JSON Patch 生成器会把两份 JSON 文档之间的差异变成一个整洁的 RFC 6902 操作数组——即把源文档变换为目标文档的 add、remove、replace、move 和 copy 步骤。切换到「应用」模式,即可对源文档运行一个补丁并查看确切结果,其中每个操作都会被校验,因此错误的操作或失败的 test 都会被捕获,而不是被悄悄跳过。第三种模式应用 RFC 7386 JSON 合并补丁,其中 null 值会删除一个键,而对象会逐键合并。它专为搭建 PATCH 端点、同步配置或审查 API 变更的开发者而打造。你的源文档、目标文档和补丁都在你的设备上处理,绝不会离开浏览器。
功能特性
- 从两份 JSON 文档生成一个最小的 RFC 6902 补丁(add / remove / replace / move / copy)
- 把一个补丁数组应用到源文档,并即时查看打补丁后的结果
- 校验每一个操作——未知操作、失败的 test 和无法解析的路径都会被报告,而非跳过
- 应用 RFC 7386 JSON 合并补丁,其中 null 值会删除一个键
- 与键顺序无关的差异比对,因此重新排序的键绝不会产生多余的操作
- 复制补丁或结果,或将其下载为 .json 文件
- 实时的「有效 / 无效」标记会指出哪一侧存在 JSON 语法错误
- 一切都在你的浏览器中运行——文档和补丁都留在你的设备上
如何使用 JSON Patch 生成器
- 选择「生成」以比对两份文档,选择「应用补丁」以运行一个 RFC 6902 补丁,或选择「合并补丁」以用于 RFC 7386
- 把你的源 JSON 粘贴到左侧
- 把目标文档、补丁数组或合并补丁粘贴到右侧
- 查看生成的操作或打补丁后的结果,然后复制或下载它
示例
输入
source: {"active":true,"roles":["admin"]}
target: {"active":false,"roles":["admin","editor"]}
输出
[
{ "op": "replace", "path": "/active", "value": false },
{ "op": "add", "path": "/roles/1", "value": "editor" }
]
「生成」会产生把源文档变成目标文档的 RFC 6902 操作。
常见错误与故障排除
- 「应用」模式提示补丁必须是一个操作数组。 — 一个 RFC 6902 补丁是一个 JSON 数组,例如 [ { "op": "add", "path": "/x", "value": 1 } ]。请把单个操作对象用方括号包起来。
- 一个 remove 或 replace 操作因路径无法解析而失败。 — 该路径必须已存在于源文档中。请检查拼写错误,记住路径以斜杠开头,并把键中的 / 和 ~ 转义为 ~1 和 ~0。
- 一个 test 操作导致整个补丁失败。 — RFC 6902 补丁是全有或全无的。一个失败的 test 会中止补丁,因此请在后续操作运行之前,确认被测试的值与源文档完全一致。
- 一个合并补丁替换了整个数组,而不是编辑其中一项。 — RFC 7386 没有元素级的数组编辑——合并补丁中的一个数组会覆盖整个数组。若要逐项修改,请使用带索引路径的 RFC 6902 补丁。
常见问题
- 什么是 RFC 6902 JSON Patch?
- RFC 6902 是一种格式,它把对 JSON 文档的改动描述为一个有序的操作数组——add、remove、replace、move、copy 和 test——每个都指向一个 JSON Pointer 路径。把该数组应用到源文档就会得到目标文档。
- JSON 合并补丁(RFC 7386)与 JSON Patch(RFC 6902)有何不同?
- 合并补丁本身就是一个映射目标的 JSON 对象:存在的键会被设置,null 值会删除一个键,数组和标量则整体替换。它更简单,但无法像 RFC 6902 操作那样移动值或编辑单个数组元素。
- 我该如何从两份 JSON 文档生成一个补丁?
- 停留在「生成」,把原始版本粘贴到左侧,把改动后的版本粘贴到右侧,工具就会计算出最小的 RFC 6902 操作数组。差异比对会忽略键顺序,因此重新排序的字段不会产生虚假的操作。
- 为什么我的补丁应用失败了?
- 操作会针对源文档进行校验。常见原因包括:remove 或 replace 的路径不存在、一个 test 操作的值不匹配,或一个无效的操作名。工具会显示具体错误,让你能修正那个操作。
- 合并补丁真的会用 null 删除一个键吗?
- 是的。在 RFC 7386 中,一个被设为 null 的属性会指示合并从结果中移除该键。若要存储一个真正的 null,你必须改用 RFC 6902 的 replace 操作。
- 我的 JSON 文档和补丁会被上传到任何地方吗?
- 不会。生成器、补丁应用器和合并补丁引擎全都在你的浏览器本地运行。你的源、目标和补丁数据都在你的设备上处理,绝不会发送到 ArrayKit。
相关工具
全部 ArrayKit 工具