【发布时间】:2017-02-03 14:09:39
【问题描述】:
我在验证布尔值列表时遇到了问题。我的意见是:
[true,true,false]
它应该不验证这一点,因为只有一个且只有一个真值的列表应该是真的。目前,我的架构通过接受一个或多个真实值(但不是全部)来执行某种包容性 OR:
{
"type": "array",
"items": {
"$ref": "#/definitions/_items"
},
"$ref": "#/definitions/xor",
"definitions": {
"xor": {
"oneOf": [
{
"$ref": "#/definitions/or"
},
{
"$ref": "#/definitions/and"
}
]
},
"_items": {
"enum": [
true,
1
]
},
"or": {
"not": {
"type": "array",
"items": {
"not": {
"$ref": "#/definitions/_items",
"maximum": 1,
"minimum": 1
}
}
}
},
"and": {
"type": "array",
"items": {
"$ref": "#/definitions/_items"
}
}
}
}
如您所见,我尝试使用最大和最小属性来解决它,但它们似乎不会影响结果。
一个真值表应该是:
[true,true,false] => 错误
[true,true,true] => 错误
[true,false,false] => 是的
[false,false,false] => 错误
[false,true,false] => 是的
[false,false,true] => 是的
[true,false,true] => 错误
[false,true,true] => 错误
【问题讨论】:
标签: javascript validation logic jsonschema