/ / Wie kann sichergestellt werden, dass der Wert beider boolescher Eigenschaften niemals gleichzeitig wahr ist? [Duplikat] - Json, Jsonschema, Json-Schema-Validator

Wie kann sichergestellt werden, dass der Wert beider boolescher Eigenschaften niemals gleichzeitig wahr ist? [duplizieren] - json, jsonschema, json-schema-validator

Herr Bob kann entweder glücklich oder traurig sein, aber nicht beides. Es ist möglich, dass er seine Stimmung nicht spezifiziert. Daher sind beide Eigenschaften, traurig und glücklich, optional.

Was wäre ein Json-Schema, wenn nur der folgende Json abgelehnt wird

{
"name": "Bob",
"sad": true,
"happy": true
}

Hier ist der fehlgeschlagene Versuch:

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"happy": {
"type": "boolean",
"default": false
},
"sad": {
"type": "boolean",
"default": false
}
},
"not": {
"allOf": [
{
"properties": {
"happy": {
"enum": [
true
]
}
}
},
{
"properties": {
"sad": {
"enum": [
true
]
}
}
}
]
}
}

Das obige Schema schlägt fehl, wenn die Eigenschaft "sad" wahr ist und die Eigenschaft "happy" fehlt.

Antworten:

1 für die Antwort № 1

Sie sind ziemlich nahe dran. Alles, was ich getan habe, war, das, was Sie haben, zu vereinfachen und hinzuzufügen required.

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"happy": {
"type": "boolean",
"default": false
},
"sad": {
"type": "boolean",
"default": false
}
},
"not": {
"properties": {
"happy": { "enum": [true] },
"sad": { "enum": [true] }
},
"required": ["happy", "sad"]
}
}