Ich versuche zu validieren, ob das Array "Aktionen" bestimmte Objekte hat. Jedes Objekt kann abhängig von der Eigenschaft type eigene Eigenschaften haben. Das Aktions-Array kann mehrere Vorkommen von diesen Art von Objekten haben, nicht nur eines.Überprüfen Sie Objekte im JSON-Array mit Ajv
My JSON:
{
"actions": [
{
"type": "X",
"a": 1,
"b": 2,
"c": 3
},
{
"type": "Y",
"d": 1,
"e": 2,
"f": 3
}
]
}
In diesem Beispiel ist das Objekt, das Typ hat = X hat erforderliche Eigenschaften als a, b, c. Der Objekttyp Y im Array hat die Eigenschaften d, e, f benötigt.
Ich versuche, dies mit dem Schalter Schlüsselwort zu überprüfen:
{
"type": "object",
"required": [
"actions"
],
"properties": {
"actions": {
"type": "array",
"items": {
"switch": [
{
"if": {
"properties": {
"type": {
"pattern": "^X$"
}
}
},
"then": {
"required": [
"a",
"b",
"c"
]
}
},
{
"if": {
"properties": {
"type": {
"pattern": "^Y$"
}
}
},
"then": {
"required": [
"d",
"e",
"f"
]
}
}
]
}
},
}
}
Aber noch kann ich nicht herausfinden, wie den Schalter Schlüsselwort verwenden, um Objekte von Arrays zu validieren, wobei jeder Objekttyp durch eine Eigenschaft angegeben ist in das Objekt, so dass der Objekttyp mit einer Eigenschaft identifiziert werden kann.
Ich habe dann das falsche Teilschema hinzugefügt. Es ist immer noch nicht in der Lage, den JSON zu validieren, wenn ich die Eigenschaft 'a' entferne. Es sagt, dass es gültig ist. –
Nein, tut es nicht: https://runkit.com/esp/58bc33722d90170014fbce7f – esp
ok danke, das Problem war, dass ich 5.0.3-Beta anstelle von 4.x. –