我有一个API路由,在处理逻辑之前验证json模式。
此路线可根据发送的JSON创建两种类型的“文章”。我使用OneOf来检查模式是否对应于这两种类型中的一种。
{
"type": "object",
"oneOf": [{
"properties": {
"name": {
"type": "string",
},
"description": {
"type": "string"
}
}
}, {
"properties": {
"author": {
"type": "string",
},
"editor": {
"type": "string"
}
},
"required":["author", "editor"]
}]
}
所以第一种类型可以有名称和描述,但这些字段不是必需的。
第二种类型需要作者和编辑。
如果仅使用作者字段发送JSON架构会发生什么? (编辑为空)
感谢您的回复。
答案 0 :(得分:1)
通过 oneOf 关键字
的定义要对oneOf进行验证,给定数据必须有效 恰好是给定子模块中的一个。
在定义架构的方式中,一个对象只包含一个" author"属性将始终验证,因为第一个定义可以翻译为:
具有任何属性集的对象有效,但如果该对象包含" name"和"描述"属性,它们必须都是字符串类型。
正如您所看到的,一个只包含"作者"属性完全有效。
实际上,如果给定的对象包含" name"那么任何给定的对象只会针对第二个定义(作者,编辑)进行验证。和/或"描述"属性,它们不是字符串。
这是学习JSON模式https://spacetelescope.github.io/understanding-json-schema/
的一个很好的参考这是一个很好的JSON Schema验证器http://www.jsonschemavalidator.net