同一份配置改了缩进,文本差异可能很多,字段含义却没有变化。反过来,只改一个布尔值,也可能改变功能行为。开始前先确定要回答的是“哪些字段变了”,还是“哪些行改了”。下面的数据都是示例。
用同一对输入看两种结果
把下面第一段放进 JSON 对比的原始输入:
{"name":"示例","enabled":true}
把第二段放进对比输入:
{"enabled":true,"name":"示例"}
运行并展开结果,应看到 same: true:本站处理器忽略对象键顺序。再把同一对文本放进文本对比,应看到 same: false,并显示原行删除、新行增加。文本工具按行比较,两个结果回答的不是同一个问题。
JSON 对象与数组的结构定义可查 RFC 8259(复核于 2026-09-06)。本站工具对数组按索引比较,因此 ["CN","JP"] 与 ["JP","CN"] 会显示变化;它不会推断业务上这些元素是否应视作集合。
让变化对应一个可复查的字段
将第二段的 enabled 改为 false:
{"enabled":false,"name":"示例"}
JSON 对比应给出一处 changed,路径为 $.enabled,从 true 到 false。记录这个路径,再核对使用该配置的功能是否符合预期。仅看到差异不等于修改正确;处理器不会运行你的应用。
数字与重复键超出支持范围时停止结构对比
把 {"id":9007199254740992} 和 {"id":9007199254740993} 放入 JSON 对比,工具会拒绝超出安全整数范围的输入,不会把它们判为相同。需要核对原始编号时,先保留原文并用文本对比查看。只有接口契约将 id 定义为字符串时,才使用 {"id":"9007199254740993"};不能为了通过工具擅自改变类型。
{"role":"viewer","role":"admin"} 也会被拒绝:同一对象的重复键可能被不同接收端处理成不同结果,应该回到数据来源确认保留哪个字段。工具不会替你删除其中一个值。{"value":1e400}、负零和转换后会改变十进制数值的输入同样停止处理,原始输入保留在页面中。
这些是本站支持边界,不能一律解释成 JSON 语法错误。JSON 的数值范围与重复成员名互操作性见 RFC 8259 第 4、6 节;解析数字可能损失精度的说明见 MDN JSON.parse(复核于 2026-09-06,本站行为于 2026-09-07 验证)。
普通 0.1 可以处理,0.10 和 1e-1 按同一十进制数值比较;0.10000000000000001 会因转换后精度损失被拒绝。数字尾零、指数写法和缩进可能变化,结构对比与格式化不是字节级或任意精度无损工具。嵌套最多支持 100 层,超出后按业务结构拆小再处理。
输入异常时先修语法
下面的原始输入故意多了一个尾随逗号:
{"enabled":true,}
JSON 对比会提示原始 JSON 无效;先到 JSON 格式化核对语法,修正为合法 JSON 后重试。文本对比仍能比较这行文字,但不会告诉你配置是否能被程序解析。
本站文本对比需要两侧都有非空内容,不能用空输入表示删除整个文件。它把 CRLF、LF 和 CR 作为行分隔符,主要展示行内容与末尾空行的差异,不是字节级文件比较器。
保存结果并复查
两种对比工具每侧最多 512 KiB;文本对比另有限制为每侧 1,500 行,结果最多展示 500 条变化。遇到截断提示,先按业务块拆小,不能把前 500 条当作全部差异。
下载结果 JSON,并记录输入来源、版本、期望变化和仍未确认的地方。修复后使用同一对输入复查,确认非预期字段没有改变。涉及请求、令牌或权限问题,再回到接口数据与配置排查继续核对;字段对比不能替代API 对象授权检查。
练习:看起来都是 2,为什么仍有变化
在响应字段变化练习中,原始响应为:
{"status":"pending","count":2}
修改后的响应为:
{"status":"ready","count":"2"}
两份都是模拟数据。在 JSON 对比中应看到两处变化:$.status 的值发生变化,$.count 从数值变为字符串。假设本练习的接口契约要求 count 为数值,而 status 允许进入 ready,先把第二份 count 修成数值 2 后重跑:应仅剩 status 一处变化。不要把允许的状态变化也删除来追求“没有差异”。
再故意把第一份改成 {"status":,应得到格式失败,而不是零处差异。恢复合法输入后,才能继续核对字段。若实际数据包含数组,按索引比较可能把顺序变化也列出来;若只需逐字确认原文本,则使用文本对比。完成这步意味着已经找出并按契约判断变化,不代表业务流程或权限正确。
这组练习可在工具内显式填入;已有输入需要先自行保存并清空,工具不会自动覆盖。请求代码也发生变化时,先按curl 草稿复查步骤确认请求条件,再比较相同条件下的响应。
把字段差异写成可复查的结论
沿用上面的模拟响应,初次对比有 status 值变化和 count 类型变化两处。按假设契约将第二份 count 修为数值后,复查只剩 status 的允许变化。将这个过程填写到排查记录,三个必填项可以这样写:
| 记录字段 | 本练习的填写内容 |
|---|---|
| 想完成的操作 | 核对商品接口响应中的 count 类型 |
| 实际观察 | 初次发现 status 值变化和 count 类型变化;修正模拟样例后复查,仅剩 status 变化 |
| 下一步复查 | 在相同业务条件下重新取得响应,按接口契约核对 count 类型及 status 是否允许变化 |
展开可选项,在“预期结果”写明本练习假设 count 为数值,在“已做修改”注明只修改了模拟输入。没有实际请求或业务测试时,把生产行为留在“尚未确认”,不能将练习结果写成接口已经恢复。
生成并下载 Markdown 后,检查记录是否保留了初次观察、修改依据和复查结果。之后补充新的响应或修改记录,旧结果会失效,需要重新生成再下载;下载前先查看当前版本,避免交接旧结论。字段按契约核对完成后,这一步即可结束,无需为追求“零差异”继续删除允许的变化。
