2017-02-07 1 views
0

Ich habe eine API-Route, die das JSON-Schema vor der Logik zu validieren.JSON-Schema draft-04 - OneOf mit erforderlich

Diese Route kann 2 Arten von "Artikeln" basierend auf dem JSON gesendet werden. Ich habe mit OneOf überprüft, ob das Schema einem dieser beiden Typen entspricht.

{ 
    "type": "object", 
    "oneOf": [{ 
     "properties": { 
      "name": { 
       "type": "string", 
      }, 
      "description": { 
       "type": "string" 
      } 
     } 
    }, { 
     "properties": { 
      "author": { 
       "type": "string", 
      }, 
      "editor": { 
       "type": "string" 
      } 
     }, 
     "required":["author", "editor"] 
    }] 
} 

  • So kann der erste Typ einen Namen und eine Beschreibung, aber diese Felder sind nicht erforderlich.

  • Der zweite Typ einen Autor und Editor haben muss.

Was passiert, wenn ein JSON-Schema mit nur Autor Feld verwiesen worden ist? (Editor ist leer)

Vielen Dank für Ihre Antworten.

Antwort

1

Durch die Definition des oneOf Stichwort

gegen oneOf zu setzen, muss die angegebenen Daten gegen genau einer der gegebenen Subschemata gültig sein.

Ein Objekt mit jedem Satz von Eigenschaften:

In der Art und Weise Ihres Schema definiert ist, enthält ein Objekt nur eine „Autor“ Eigenschaft wird immer bestätigen, weil die Faust oneOf Definition kann übersetzt werden ist gültig, aber wenn das Objekt Eigenschaften "name" und "description" enthält, müssen beide Zeichenfolgen sein.

Wie Sie sehen, ist ein Objekt, das nur eine "author" -Eigenschaft enthält, durch diese Definition absolut gültig.

In Wirklichkeit wird jedes gegebene Objekt nur gegen die zweite oneOf-Definition (Autor, Editor) validiert, wenn das gegebene Objekt "name" und/oder "description" -Eigenschaften enthält und keine Strings sind.

Dies ist eine gute Referenz für das Lernen JSON Schema https://spacetelescope.github.io/understanding-json-schema/

Und das ist ein guter JSON Schema-Validator http://www.jsonschemavalidator.net

Verwandte Themen