我有一个名为pageCount的属性,它是一个数字,后跟一个基于页码的信息数组。现在,我想将数组中的maxItems设置为等于pageCount的值。有办法可以做到吗?我看到的大多数地方实际上都使用数字来定义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??>
答案 0 :(得分:3)
从json-schema Draft v04开始,你不能使用&#34;属性值&#34;限制minItems。根据minItems标准的现状:
此关键字的值必须是整数。这个整数必须是 大于或等于0。
如果你有少量的&#34; minItems&#34;不同的选项,你可以为每个选项编写一个模式,如:
"minArrayItems" : {
"type" : "array",
"minItems" : 1
}
然后通过$ ref:
引用它"allOf" : { {
"$ref" : "#/definitions/minArrayItems"
}
}
这样你就可以间接地修改值(只需要修改minArrayItems)。
另一种选择是添加预处理步骤并以动态方式构建模式。
最佳选择取决于您的实际情况。