JSON 对比
JSON Diff
按结构比较两份 JSON,忽略键的顺序,报出新增、删除和改动的路径。
按结构而不是按文本比较两份 JSON 文档,所以键的顺序变了或缩进不同不算差异。输出既是一张可读的改动表,也是一份能把左边文档精确变成右边文档的 RFC 6902 补丁。
先把两个数组对上,这样插入一个元素算一处改动,而不是一百处。
左
右
怎么用
粘贴两份文档
两份接口响应、两份配置、改前和改后。比较在 worker 里运行,随你输入更新。
选择数组怎么比较
这个设置决定结果有没有用。「对齐」先把两个数组对上,插入一个元素就是一处改动。「按下标」逐位置比较,顺序本身就是数据时用它。「按键」用一个指定的成员匹配元素——两份响应以不同顺序列出同一批东西时,答案是它。
决定 null 是否等于缺失
有的序列化器省略空字段,有的写 `null`。如果你在比较两套技术栈的输出,打开它能去掉一整页的假差异。
拿表,或者拿补丁
表是给人读的;补丁是拿去应用的。两者里的路径都是 RFC 6901 指针,可以粘进任何懂 JSON Patch 的工具。
常见问题
为什么数组里插入一个元素显示成一百处改动?
因为数组模式是「按下标」,所以元素 1 在和元素 2 比较,一切都错位了。切到「对齐」,它先把数组对上;或者元素有 id 的话切到「按键」。
我能在这里应用补丁吗?
不能,这个页面只生成它。但补丁是精确的:把它应用到左边文档,在数据模型里逐字节得到右边文档,这个来回是测试套件在每次改动时都断言的。
它说两份文档没有关联。
这条消息在比较超过两万处改动并停下时出现。到那时 diff 已经告诉不了你任何有用的东西——你在比较两份不同的文档,而不是同一份的两个版本。
键的顺序有关系吗?
对这个工具没有——JSON 对象是无序的,所以两份只在键顺序上不同的文档报告为相同。如果键的顺序对你的消费方有关系,那个消费方依赖的是 JSON 没有承诺的东西。
可以从这些接进来
接下来
这些工具吃得下当前工具的产出,结果可以直接送过去。
JSON 格式化与校验
JSON Formatter & Validator
把 JSON 美化成缩进形式或压成一行,校验语法并直接指出出错的行和列。
JSONPath 测试器
JSONPath Tester
对文档运行 JSONPath 表达式,边输入边高亮命中的节点。
OpenAPI 变更对比
OpenAPI Diff
比较两份 OpenAPI 文档,把破坏兼容的变更和纯粹新增的分开列。
文本比对
Text Diff
左右对照或行内对照两段文本,可按行、按词或按字符比较。
Base64 编码解码
Base64 Encoder & Decoder
对文本和文件做 Base64 与 Base64URL 编解码,UTF-8 处理正确。
curl 转代码
curl to Code
把一条 curl 命令转成 fetch、axios、Python requests、Go、PHP 或 PowerShell 代码。