JSON 与数据处理指南
JSON Schema 本地定义:用 $defs 复用约束
建立使用本地引用的独立 Schema,检查定义路径与复用约束,不依赖远程请求。
把复用规则放入定义
定义让同一约束只维护一处,多个属性可引用它,避免复制范围或模式导致规则分叉。
下面让两个计数字段都遵循非负整数规则,先在 Schema 校验工具中测试一份有效对象。
{"$defs":{"count":{"type":"integer","minimum":0}},
"type":"object","properties":{
"sent":{"$ref":"#/$defs/count"},
"received":{"$ref":"#/$defs/count"}}}复用与必填是不同规则
properties 只约束出现的字段,定义与引用不会自动把字段设为必填。
需要缺失时报错,应在外层对象添加 required;分别测试负数与缺失字段,确认对应规则。
按文档内路径解析
以 # 开始的片段指向当前 Schema,定义名拼错不能通过检查数据本身解决。
本站拒绝远程 Schema 引用,需把依赖定义打包进当前文档,不应期待工具自动下载另一份 Schema。
对约定进行版本管理
修改共享定义会影响所有引用字段,收紧约束后需要复查相关样例。
此处采用 2020-12 的 $defs 写法,旧草案常用 definitions;交付前确认目标校验器支持的方言。