2013-05-09 14 views
20

Link alla specifica: http://json-schema.org/latest/json-schema-validation.html#anchor64Comprendere la parola chiave "additionalProperties" nella bozza JSON Schema 4

Sezione 5.4.4.2 stati:

successo la validazione di un'istanza di un oggetto contro queste tre parole chiave dipende dalla valore di "additionalProperties": se il suo valore è booleano true o uno schema, la validazione ha esito positivo; ...

sezione 5.4.4.3 paese:

Se "additionalProperties" è assente, può essere considerato presente con uno schema vuoto come valore.

Ok, quindi se "additionalProperties" è assente, conta come presente con uno schema vuoto. E se si tratta di uno schema (di qualsiasi tipo), l'oggetto si convalida con successo indipendentemente da qualsiasi altra considerazione.

Ma questo è contraddetto dall'asserzione nella sezione 5.4.4.5, "Esempio", che l'istanza data non riesce a convalidare contro lo schema dato (che non specifica nulla per "additionalProperties").

Qualcuno può spiegare dove e in che modo sto interpretando male le specifiche?

+0

Spero che questo abbia aiutato. Grazie! –

risposta

25

Hai trovato un errore nelle specifiche, quindi non stai interpretando male qualcosa.

C'è una versione aggiornata (di due giorni dopo) della bozza Internet sul sito web IETF, dove questo esempio è diverso.

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

Poiché il documento è una bozza internet, molto probabilmente la versione sul http://datatracker.ietf.org/ è la versione corretta.

Stato di questo memo

Questo Internet-Draft è presentata in piena conformità con le disposizioni del
BCP 78 e BCP 79.

Internet-Bozze documenti stanno lavorando su Ingegneria Internet
Task Force (IETF)
. Si noti che altri gruppi possono anche distribuire documenti di lavoro come bozze di Internet. L'elenco delle bozze Internet attuali
è allo http://datatracker.ietf.org/drafts/current/.

Internet-Bozze sono documenti di lavoro di Internet Engineering
Task Force (IETF).

Inoltre, le due versioni hanno date diverse, e le date di scadenza:

  • versione si collega - scritta: 30 gennaio 2013 e Scadenza: 3 agosto 2013.
  • versione on ietf - scritto su: 1 febbraio 2013 e Scadenza: 5 agosto 2013

Nella versione IETF:

Questo schema verrà utilizzato come esempio :

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

Questa è l'istanza di convalidare:

{ "P1": true, "P2": null, "A32 & o": "foobar", "": [], "giocherellare": 42, "mela": "torta "}

i tre insiemi di proprietà sono:

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

    p [ "p1" ] 

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

Applicando i due passi dell'algoritmo:

 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". 

L'insieme "s" contiene ancora due elementi, "" e "violino". La convalida pertanto non riesce.

Problemi correlati