Hallo Kollege stackoverflowers!JSON Schema: benötigt mindestens ein nicht-positionelles Array-Element
Ich habe ein 'Problem' mit JSON-Schema-Code und Validierung von JSON-Arrays. Mein Problem ist, dass ich mindestens ein Element in einem Array benötige, um ein bestimmtes Schema einzuhalten, aber die restlichen Elemente können frei formatiert sein. Ich kann nicht davon ausgehen, dass sich mein gesuchtes Element in einer bestimmten Position des Arrays befindet. Nur mit ganzen Zahlen (der Einfachheit halber) kann das Problem umformuliert werden zu: "Schreibe ein Schema, das bestätigt, dass es mindestens eine 1 in dem Array gibt, unabhängig von seiner Position". Positive Beispiele wären:
[1]
[0, 0, 1]
["a", true, null, 1, false, null, 3.2]
[1, 1, 1, 1]
Negative Beispiele seien:
[]
["a"]
[0, 2, 4]
Mit der Dokumentation bei json-schema.org (Draft 04) und dem Spiel mit den JSON Schema Validator ich mit meiner eigenen Lösung kam die doppelte Negation verwendet und fühlt sich recht umständlich:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "testid",
"title": "test array schema",
"not": {
"items":
{
"not": { "enum": [1] }
}
}
}
Es nutzt das Prinzip „nicht (für-alle-Artikel (nicht 1 ist))“, der arbeitet, fühlt sich aber nicht sehr e Legat. Gibt es so etwas wie eine "Anforderung" für Arrays, die ich vermisst habe?
Danke für die Rückmeldung!
Ehrfürchtig, danke Jason! Der Link, den Sie angegeben haben, war sehr hilfreich. Ich habe den Vorschlag für Entwurf 05 nicht gefunden, als ich nach der Lösung gesucht habe, und tatsächlich ist das vorgeschlagene 'contains'-Schlüsselwort das, nach dem ich gesucht habe.So ist die Lösung, um ein eleganteres Schema zu erhalten, das 'contains' verwendet : warten. – TheRealISA