我有一个JSON,像这样:
{
"listA": [
{
"prop1": "mine"
},
{
"prop1": "mine"
}
],
"listB": [
{
"prop1": "mine"
}
],
"propsForAll": {
"property1": "value",
"property2": "value"
}
}
我需要json模式来验证是否存在任何列表中的至少一个元素{listA,listB,listC}
目前,我的架构如下所示:
"properties": {
.....
"listA": {
"type": "array",
"items": {
"$ref": "#/definitions/elementA"
},
"minItems": 1
},
"listB": {
"type": "array",
"items": {
"$ref": "#/definitions/elementB"
},
"minItems": 1
},
"listC": {
"type": "array",
"items": {
"$ref": "#/definitions/elementC"
},
"minItems": 1
},
.....
},
.....
"anyOf": [
{
"required": [
"listA"
]
},
{
"required": [
"listB"
]
},
{
"required": [
"listC"
]
}
],
但是,如果我有一个带有一个元素的listA和一个listC-空,则会收到验证异常,这不是我所需要的。我需要在任何列表中有一个元素,有什么想法吗?
您需要将minItems: 1
约束移动到anyOf
子方案。
这是一个现场演示:https : //jsonschema.dev/s/RszNl
{
"properties": {
"listA": {
"type": "array",
"items": {
}
},
"listB": {
"type": "array",
"items": {
}
},
"listC": {
"type": "array",
"items": {
}
}
},
"anyOf": [
{
"required": [
"listA"
],
"properties": {
"listA": {
"minItems": 1
}
}
},
{
"required": [
"listB"
],
"properties": {
"listB": {
"minItems": 1
}
}
},
{
"required": [
"listC"
],
"properties": {
"listC": {
"minItems": 1
}
}
}
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句