2017-05-22 4 views
0

を持っているArrayオブジェクトを禁止するJSONスキーマは次のとおりです。だから、JSONスキーマプロパティ

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

、私はこれを禁止する方法:私のスキーマで

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

を?

+1

なぜ 'class'を作成しないのですか? –

+0

私は配列が必要なので? – Hedin

+0

あなたはadditionalItemsをfalseに設定することができますが、私はそれがカードの$スキーマが何であるかは重要だと思います。 –

答えて

0

私はあなたが、私はこの問題は、それが純粋なJavaScriptの問題であるとして、JSONスキーマとは何の関係もないと信じている"additionalProperties": false

+0

オブジェクト用であり、配列用ではありません。 – Hedin

0

を探していると思います。

JSONスキーマはJavaScriptオブジェクトではなくJSONドキュメントを検証します。 JSON自体では、配列に追加のプロパティを追加することはできません。 JavaScriptは、あなたが追加のプロパティを配置することができますので、にもかかわらず

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

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

はの出力が得られます:

私はあなたにクロームコンソールで実行されているJavaScriptコードの簡単な例をお見せしましょう結果のJSONオブジェクトには配列がありません。したがって、JSONがスキーマに対して検証される時点までは到達しません。

だからあなたの質問への答えは次のとおりです。

それはJSON自体が禁止されているので、あなたはJSONスキーマでそれを行うことはできません。