JSON Schema properties使用$ref时语法合法但无法正确校验载荷问题
问题产生原因
- 主Schema结构逻辑错误:你误将校验规则关键字
allOf写入了properties字段内部,JSON Schema会将allOf识别为animal对象下的一个普通属性的名称,而非全局生效的组合校验指令,完全没有触发你预期的外部引用校验逻辑。 - 被引用的
ref.json不符合JSON Schema规范:作为用于校验对象的外部Schema,它缺少根层级的type: "object"声明,也没有将属性规则包裹在properties字段下,当前结构会被校验器判定为无效规则,无法正常执行校验。
修复方案
第一步:修正ref.json的结构
补充合法的对象校验Schema结构,内容如下:
{ "type": "object", "properties": { "action": { "type": "string" } }, "required": ["action"] }
第二步:修正主Schema的结构
直接在animal属性的规则层级引用外部Schema即可,不需要多余的嵌套配置:
{ "type": "object", "properties": { "animal": { "$ref": "file:./ref.json" } }, "required": ["animal"] }
调整完成后,你提交的测试payload中action为数字类型的场景会正常触发校验失败的提示。
内容的提问来源于stack exchange,提问作者Secret Sauce
相关产品推荐
相关产品推荐

