簡體   English   中英

JSON模式禁止Array對象具有屬性

[英]JSON Schema to prohibit an Array object to have properties

json模式是:

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

因此,如何禁止這種情況:

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

與我的架構?

我認為您正在尋找"additionalProperties": false

我相信這個問題與JSON模式無關,因為它是純JavaScript問題。

JSON模式會驗證JSON文檔而不是JavaScript對象。 而且JSON本身不允許您將其他屬性放在數組上。

讓我向您展示一個在Chrome控制台中運行的JavaScript代碼的簡單示例:

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

將給出以下輸出:

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

因此,即使JavaScript允許您將其他屬性放入數組中,結果JSON對象也不會包含它們。 因此,當針對Schema驗證JSON時,問題就解決了。

因此,您的問題的答案是:

您無法在JSON模式中執行此操作,因為JSON本身禁止這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM