JSON-Schema: Validiere einen Zahl-Null-Wert

7

Gibt es eine Möglichkeit, eine JSON-Schemaeigenschaft entweder als Zahl oder null ? zu aktivieren?

Ich baue eine API, die ein heading -Attribut enthält. Kann eine Zahl zwischen 0 (einschließlich) und 360 (exklusiv) oder null sein, daher sind die folgenden Eingaben OK:

%Vor%

Und die folgenden Eingaben sind fehlerhaft:

%Vor%

Nachtrag:

anyOf ist eindeutig die richtige Antwort. Hinzufügen des vollständigen Schemas für Klarheit.

Schema

%Vor%     
Adam Matan 21.03.2014, 17:02
quelle

2 Antworten

18

In Entwurf-04 würden Sie die anyOf-Direktive verwenden:

%Vor%

Sie könnten auch "type" verwenden: ["number", "null"] wie Adam es vorschlägt, aber ich denke, dass anyOf sauberer ist (solange Sie eine 04-Implementierung verwenden) und bindet die minimale und maximale Deklaration auf die Nummer explizit.

Haftungsausschluss: Ich weiß nichts über die Python-Implementierung, meine Antwort ist über JSON-Schema.

    
fiddur 23.03.2014, 08:59
quelle
16

Der Trick besteht darin, ein Typ-Array zu verwenden. Statt:

%Vor%

Verwenden:

%Vor%

Der folgende Code erzwingt eine Number-or-Null-Richtlinie sowie numerische Einschränkungen, wenn der Wert eine Zahl ist:

%Vor%

Was gibt:

%Vor%     
Adam Matan 21.03.2014 17:02
quelle