2017-05-22 2 views
0

Das json Schema ist:JSON Schema ein Array-Objekt zu verbieten Eigenschaften haben

"Deck": { 
    "type": "array",  
    "items": { 
    "$ref": "#/definitions/Card" 
    }, 
    "minItems": 52, 
    "maxItems": 52, 
    "uniqueItems": true 
}, 

Also, wie kann ich das verhindern:

let d = new Deck(); 
d.garbageField = 'fdsf'; 

mit meinem Schema?

+1

Warum erstellen Sie keine 'Klasse'? –

+0

Weil ich Array brauche? – Hedin

+0

Sie können additionalItems auf false setzen - aber ich denke, es ist wichtig, was das $ Schema der Karte ist. –

Antwort

0

Ich glaube, Sie suchen "additionalProperties": false

+0

Es funktioniert für Objekte, nicht für Arrays. – Hedin

0

Ich glaube, dass dieses Problem nichts mit JSON Schema zu tun hat, wie es ein reines JavaScript Problem.

JSON-Schema validiert JSON-Dokumente nicht JavaScript-Objekte. Und mit JSON selbst können Sie keine zusätzlichen Eigenschaften in Arrays einfügen.

Lassen Sie mich Ihnen ein einfaches Beispiel für JavaScript-Code in der Konsole Chrome ausgeführt wird:

let d = ['a', 'b', 'c']; 
d.e = 'test'; 
JSON.stringify(d); 

Wird die Ausgabe geben:

"["a","b","c"]" 

Also auch wenn JavaScript können Sie zusätzliche Eigenschaften setzen in ein Array wird das resultierende JSON-Objekt nicht enthalten. Daher wird es nicht zu dem Punkt kommen, wenn der JSON gegen das Schema validiert wird.

So ist die Antwort auf Ihre Frage ist:

Sie nicht, dass in JSON Schema tun können, weil sie von JSON selbst verboten ist.

Verwandte Themen