开发调试
接口配置改了什么?用四处差异核对 JSON
极捷工具编辑 · 更新于
发布前拿到两份配置,字段顺序变动不一定代表业务变化。本例比较虚构服务的开关、每日限额和区域配置,分清值变化、类型变化、新增与删除,再下载可复核的差异报告。
打开JSON 结构对比 →操作步骤
- 打开 JSON 结构对比,点击“载入示例”。左侧是原配置,右侧是新配置;也可分别读取不超过 512 KiB 的 UTF-8 .json 或 .txt 文件,读取后还需要点击比较。
- 点击“比较 JSON”,应有四处差异:新增、删除、值变化、类型变化各 1。service 换了位置但仍是 demo,不会出现在差异列表。
- 核对 /enabled:原值是 boolean 类型的 true,新值是 string 类型的字符串。这种变化可能影响条件判断,不能只看字面内容。
- 核对 /limits/daily 从 100 变成 120,/legacy 从 null 变成不存在,/region 从不存在变成字符串 cn。不存在与 null 是不同状态,不要把删除误记成空值。
- 点击“下载报告”,用文本编辑器打开 jijie-json-comparison.json。counts 的四项应各为 1,changes 含四条路径记录。before/after 的 text 保存原始 JSON 片段,数字也放在字符串里,以保留长编号。
- 把新 JSON 的 enabled 改回布尔值 true。原报告立即清除,下载按钮禁用;重新比较应剩三处。点击“交换两侧”后重新比较,可核对新增与删除方向互换。
跟着示例试一次
原配置含 service=demo、enabled=true、limits.daily=100、legacy=null。新配置将限额改为 120,把开关误写成字符串,删除 legacy 并新增 region=cn,同时调整键顺序。应报告四处变化,而不是把顺序调整算成业务变更。
原 JSON:
{"service":"demo","enabled":true,"limits":{"daily":100},"legacy":null}
新 JSON:
{"limits":{"daily":120},"service":"demo","enabled":"true","region":"cn"}怎样确认结果正确
四条路径是 /enabled、/limits/daily、/legacy、/region;核对类型标签和“不存在”文字。复制与下载包含完整报告。整个新增或删除的对象、数组只计一处,不按内部字段计数。报告不是 JSON Patch,也不会替你合并配置。
常见问题与边界
对象忽略键顺序,数组仍按下标比较,不自动按 id 对齐;[1,2] 换成 [2,1] 会有两处值变化。按业务 ID 核对的清单需先自行对齐。 数字按原始写法比较,因此 1、1.0、1e0 以及 -0、0 会产生差异。这避免长整数精度损失,但提示不等于数值大小变化。字符串解码转义后比较,仍保留大小写和内容中的空格。 路径使用 JSON Pointer,字段名 a/b 对应 /a~1b,字段名 ~ 对应 /~0;空字符串路径表示根节点,/ 表示名称为空的字段,界面用引号区分。 注释、尾随逗号、重复字段和语法错误会阻止比较。每侧最多 64 层、20,000 个结构节点,差异最多 1,000 处,字段名最多 200 字符,报告内容最多 4 Mi 字符,超限不生成部分报告。页面只预览前 100 处,每个值前 600 字符;完整值在报告中。 输入、读取和比较都在当前浏览器进行,不上传 JSON,不自动保存。刷新前先导出;报告可能包含敏感字段,分享前自行检查。