2014-12-22 129 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)。

另一种选择是添加一个预处理步骤并以二元方式构建模式。

最好的选择取决于你的实际情况。

相关问题