2014-12-22 83 views
1

我有一個名爲pageCount的屬性,它是一個數字,後面跟着一個基於頁碼的信息數組。現在,我想將數組中的maxItems設置爲等於pageCount的值。有沒有辦法可以做到?我看到的大多數地方實際上都使用數字來定義maxItems,但是我們可以爲模式本身分配一個屬性值嗎?在JSON模式中分配數組中的maxItems屬性等於其他屬性

  "pageCount": { 
        "type":"number", 
        "mininum": 1, 
        "required":true 
      }, 
      "pages": { 
        "type":"array", 
        "required":true, 
        "minItems": 1, 
        "maxItems" : <to be set as the the value of pageCount??> 

回答

2

從json-schema草稿v04開始,您不能使用「屬性值」來限制minItems。根據minItems標準的當前狀態:

此關鍵字的值必須是整數。該整數必須大於 ,或等於0。

如果你有少量的「minItems」不同的選項,你可以寫一個模式爲每一個,是這樣的:

"minArrayItems" : { 
    "type" : "array", 
    "minItems" : 1 
} 

,然後引用它通過$裁判:

"allOf" : { { 
     "$ref" : "#/definitions/minArrayItems" 
    } 
} 

這樣,你得到一個間接的方法來修改的值(只需要修改minArrayItems)。

另一種選擇是添加一個預處理步驟並以二元方式構建模式。

最好的選擇取決於你的實際情況。

相關問題