JSON模式:如何为不同嵌套级别的对象强制oneOf



我最近学习了(this、this和this,以及其他资源(如何使用oneOf关键字来声明JSON有效性,仅当多个元素中的一个元素位于同一嵌套级别时。例如,以下模式:

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"req1": {
"type": "string"
},
"req2": {
"type": "string"
},
"obj": {
"type": "object",
"properties": {
"req1": {
"type": "string"
}
}
}
},
"oneOf": [
{ "required": ["req1"] },
{ "required": ["req2"] }
]
}

确保以下是有效的json:

{ "req1": "foo", "obj": { "req1": "foo" } }
{ "req2": "foo", "obj": { "req1": "foo" } }

以下不是因为同时存在req1req2,而不是req1req2中的一个:

{ "req1": "foo", "req2": "foo", "obj": { "req1": "foo" } }

我没能从这个例子中推断出";所需的";概念到不同嵌套级别的元素。例如,如何强制要求req1obj.req1中的一个

例如,我如何强制要求req1和obj.req1中的一个?

...
"oneOf": [
{
"required": [ "req1" ]
},
{
"required": [ "obj" ],
"properties": {
"obj": {
"type": "object",
"required": [ req1 ]
}
}
}
]

相关内容

  • 没有找到相关文章

最新更新