2013-05-09 9 views
20

Link zur Spezifikation zu verstehen: http://json-schema.org/latest/json-schema-validation.html#anchor64das „additionalProperties“ Schlüsselwort in JSON Schema Entwurf 4

Abschnitt 5.4.4.2 heißt es:

Erfolgreiche Validierung einer Objektinstanz gegen diese drei Schlüsselwörter, hängt von der Wert von "additionalProperties": Wenn der Wert boolean true oder ein Schema ist, ist die Validierung erfolgreich; ...

Abschnitt 5.4.4.3 heißt es:

Wenn "additionalProperties" nicht vorhanden ist, kann es mit einem leeren Schema als ein Wert vorhanden betrachtet werden.

Ok, wenn also "additionalProperties" fehlt, gilt es als vorhanden mit einem leeren Schema. Und wenn es ein Schema (egal welcher Art) ist, validiert das Objekt erfolgreich unabhängig von anderen Überlegungen.

Dies wird jedoch durch die Aussage in Abschnitt 5.4.4.5, "Beispiel" widerlegt, dass die gegebene Instanz nicht gegen das gegebene Schema validieren kann (was nichts für "zusätzliche Eigenschaften" spezifiziert).

Kann mir jemand erklären, wo und auf welche Weise ich die Spezifikation falsch interpretiere?

+0

Hoffnung, die geholfen hat. Vielen Dank! –

Antwort

25

Sie haben einen Fehler in der Spezifikation gefunden, so dass Sie nichts falsch interpretieren.

Es gibt eine aktualisierte Version (zwei Tage später) des Internetentwurfs auf der IETF-Website, auf der sich dieses Beispiel unterscheidet.

sehen: http://tools.ietf.org/html/draft-fge-json-schema-validation-00#page-13

Da das Dokument ein Internet-Entwurf ist, höchstwahrscheinlich die Version auf http://datatracker.ietf.org/ die richtige Version ist.

Status dieses Memo

Diese Internet-Draft in voller Übereinstimmung mit den
Bestimmungen der BCP 78 und BCP vorgelegt 79.

Internet-Drafts arbeiten Dokumente die Internet Engineering
Task Force (IETF)
. Beachten Sie, dass andere Gruppen auch
Arbeitsdokumente als Internet-Entwürfe verteilen können. Die Liste der aktuellen Internet-
Entwürfe ist unter http://datatracker.ietf.org/drafts/current/.

Internet-Entwürfe sind Arbeitsdokumente des Internet Engineering
Task Force (IETF).

Zusätzlich sind die beiden Versionen unterschiedliche Datumsangaben und Verfallsdaten:

  • Version verlinken - geschrieben: 30. Januar 2013 und Gültig bis: 3. August 2013.
  • Version auf ietf - geschrieben am: 1. Februar 2013 und Gültig bis: 5. August 2013

Auf der IETF-Version:

Dieses Schema als Beispiel verwendet wird, :

{ 
     "properties": { 
      "p1": {} 
     }, 
     "patternProperties": { 
      "p": {}, 
      "[0-9]": {} 
     }, 
     "additionalProperties": false 

Dies ist die Instanz zu bestätigen:

{ "p1": true, "p2": null, "a32 & o": "foobar", "": [], "Geige": 42, "apple": „pie "}

die drei Immobilien-Sets sind:

s [ "p1", "p2", "a32&o", "", "fiddle", "apple" ] 

    p [ "p1" ] 

    pp [ "p", "[0-9]" ] 

Anwendung der zwei Schritte des Algorithmus:

 after the first step, "p1" is removed from "s"; 

     after the second step, "p2" (matched by "p"), "a32&o" (matched by 
     "[0-9]") and "apple" (matched by "p") are removed from "s". 

Die Menge "s" enthält immer noch zwei Elemente, "" und "Geige". Validierung schlägt daher fehl.