接口返回一大坨嵌套 JSON,写文档、写断言、写增量更新都要跟它打交道。四个配套规范各自解决一个环节:Schema 描述「长什么样」,校验判断「合不合规」,Patch 表达「改了哪里」,Pointer 定位「具体哪个值」。把这四个工具串起来用,JSON 相关的杂活基本就齐了。
手写 JSON Schema 很枯燥。把一段真实响应粘进推断工具,它会自动识别字段类型、必填项、数组元素结构与嵌套对象,生成 draft-07 Schema。要点:
有了 Schema,就能用校验工具逐字段检查数据,支持 type、required、enum、minimum、pattern 等常用关键字。它最大的价值不是「通过/不通过」,而是列出所有错误路径——比如 /data/items/2/price 类型不符,直接定位到数组第 3 个元素,排查接口契约问题不用肉眼扫。
建议把它用在三个地方:联调时验后端返回、上线前验配置数据、写自动化测试前先确认样例有效。
| 规范 | 作用 | 典型写法 |
|---|---|---|
| RFC 6902 Patch | 描述两份 JSON 之间的操作序列 | {"op":"replace","path":"/name","value":"张三"} |
| RFC 6901 Pointer | 用一个字符串精确定位 JSON 中的值 | /data/items/0/id |
Patch 生成对比修改前后的两份 JSON,自动产出 add / remove / replace 操作序列,支持嵌套对象与数组差异,直接复制给增量更新接口用。比整份重传省带宽,也更容易做审计记录。
Pointer 查询按路径取值,支持数组下标、~0(转义 ~)与 ~1(转义 /),还能一键列出全部叶子路径——写接口断言、找配置项位置时特别顺手。
问:推断出的 Schema 能直接用于生产校验吗?
不建议。单条样例推断不出「哪些字段必填」「取值有哪些枚举」「字符串长度限制」,这些业务约束要手工补。先推断再收紧,是标准做法。
问:Patch 里数组用下标会不会错位?
会。RFC 6902 的 add/remove 会改变后续下标,生成操作序列时工具按最长公共子序列处理,但业务上仍建议在数组元素有稳定 id 的场景使用,避免并发修改撞车。
问:这些工具会上传我的接口数据吗?
不会,四个工具都在浏览器本地计算,粘贴的 JSON 不出本机,处理含真实字段的响应也放心。
四个规范各自都不复杂,但组合起来正好覆盖「描述—验证—定位—更新」的完整链路。收藏这一组,下次面对深层嵌套 JSON 就不用一层层手动展开了。