是否可能进行此架构验证
我有此架构要求,如果不存在a和b,则必须是c
例如:
{
"group1": {
"a": 10
},
"group2": {
"group3": {
"b": 30
}
},
"group4": {
"c": 20
}
}
如果存在a
,则b
和c
不应在JSON中。如果存在b
和c
,则a
不应在JSON中。
我可以看到,在V6 JSON Schema规范中,关键字switch
可以帮助解决此要求,但无法使其正常工作。
使用当前规格?
草稿-06是当前规格,但尚无条件。Draft-07具有IF/then/else/else使用:
{
"if": {"required": ["a"]},
"then": {"not": {"$ref": "#/definitions/bc"}},
"else": {"$ref": "#/definitions/bc"},
"definitions": {
"bc": {
"anyOf": [
{"required": ["b"]},
{"required": ["c"]}
]
}
}
}
当前/then/then/the/else在AJV中使用ajv-keywords支持。
任何有条件的条件都可以不用/then/then/then/then/then使用关键字,aLLOF而不是:
:{
"anyOf": [
{"allOf": [ifSchema, thenSchema]},
{"allOf": [{"not": ifSchema}, elseSchema]}
]
}