我有一个具有两个同级JSON对象的JSON,并且我希望有一个满足以下条件的架构:
我需要一个架构,当第一个对象中没有HARD_RULES或SOFT_RULES枚举时,我需要在第二个对象中使用'referee'属性。
但是,在存在object1的HARD_RULES或SOFT_RULES枚举的情况下,应该忽略或丢弃第二个对象中的“裁判”属性。
请注意:
{
"items": [{//Object 1
"required": ["host"],
"properties": {
"type": {
"enum": ["HARD_RULES", "SOFT_RULES"],
"type": "string"
},
"host": {
"type": "string"
}
}
}, {//Object 2
"required": ["refree"],
"properties": {
"type": {
"enum": ["INDOOR"],
"type": "string"
},
"refree": {
"type": "string"
}
}
}]
}
一些例子:
//valid 1
{
"items":[
{
"type":"HARD_RULES",
"host": "some-host",
"age":10
},
{
"type":"INDOOR",
"time":"some-time"
//no referee here
}
]
}
//valid 2
{
"items":[
{
"type":"SOFT_RULES",
"host": "some-host",
"age":10
},
{
"type":"INDOOR",
"time":"some-time"
//no referee here
}
]
}
//valid 3
{
"items":[{
"type":"INDOOR",
"time":"some-time",
"refree":"Tom" // referee here
}]
}
//invalid
{
"items":[
{
"type":"SOFT_RULES",
"host": "some-host",
"age":10
},
{
"type":"INDOOR",
"time":"some-time",
"refree":"Tom" // referee cannot be here as we have SOFT_RULES above
}
]
}
答案 0 :(得分:0)
假设您在此处使用draf-7。
您需要将两个子方案包装在oneOf
数组中。
这意味着其中一个模式必须是有效的,不得超过一个,而不是一个。
您还需要为每个子模式添加additionalProperties: false
。
您已经快要得到这个了!