我有点奇怪的情况。我正在运行一个不支持草案4的JSON模式验证器,由于公司的困难,我坚持使用它而不是替换它。我们的开发人员给了我草案4格式的模式,所以我必须手工完成并对其进行反向转换,特别是必填字段。
这一切都运行良好,直到我遇到这样的事情(考虑这个伪代码;我仍然掌握JSON):
"items": {
"type": "array",
"required" : true,
"items": [
{...},
"required": ["0", "1"] // This bit right here
],
}
我告诉它基本上说,“数组中的前两项是必需的。”但我无法在JSON草案3中找到表达方式。这是否支持,如果是这样,你会如何表达它?
答案 0 :(得分:1)
required
是一个只对对象实例有意义的关键字,而不是数组。
指示数组必须至少包含2个项目的方式是Draft3和Draft4中的minItems
个关键字。
如果您需要为数组中的第一项和第二项表达任何其他模式,可以通过在items
数组中包含两个模式来实现。例如,以下架构要求属性"0"
和"1"
包含在数组的第一个和第二个项目中。
对于草案3:
"items" : [{
"properties" : {
"0" : {"required" : true},
"1" : {"required" : true}
}
}, {
"properties" : {
"0" : {"required" : true},
"1" : {"required" : true}
}
}
]
草案4:
"items" : [{
"required" : ["0", "1"]
}, {
"required" : ["0", "1"]
}
]