如何使用 json shema 相互排除两个(或更多)布尔标志?
How to mutually exclude two (or more) boolean flags using json shema?
{ flag1: true, flag2: false } -> ok
{ flag1: false, flag2: true } -> ok
{ flag1: true } -> ok
{ flag2: true } -> ok
{ flag1: false, flag2: false } -> ok
{ } -> ok
{ flag1: false } -> ok
{ flag2: false } -> ok
{ flag1: true, flag2: true } -> NO!
我希望仅当 flag1
和 flag2
都相等时验证才会失败 true
。
您可以使用 not
:
准确指定该约束
{
"not": {
"required": ["flag1", "flag2"], // both flags are present
"properties": { // Each flag is equal to true
"flag1": {"enum": [true]},
"flag2": {"enum": [true]}
}
}
}
{ flag1: true, flag2: false } -> ok
{ flag1: false, flag2: true } -> ok
{ flag1: true } -> ok
{ flag2: true } -> ok
{ flag1: false, flag2: false } -> ok
{ } -> ok
{ flag1: false } -> ok
{ flag2: false } -> ok
{ flag1: true, flag2: true } -> NO!
我希望仅当 flag1
和 flag2
都相等时验证才会失败 true
。
您可以使用 not
:
{
"not": {
"required": ["flag1", "flag2"], // both flags are present
"properties": { // Each flag is equal to true
"flag1": {"enum": [true]},
"flag2": {"enum": [true]}
}
}
}