如何使用 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!

我希望仅当 flag1flag2 都相等时验证才会失败 true

您可以使用 not:

准确指定该约束
{
    "not": {
        "required": ["flag1", "flag2"], // both flags are present
        "properties": { // Each flag is equal to true
            "flag1": {"enum": [true]},
            "flag2": {"enum": [true]}
        }
    }
}