关于这个问题有几个问题,但是似乎没有一个问题可以解决这个特定问题,有关JSON Schema的文档也没有,所以也许无法解决。
问题是我有一个数组,可以使用4个字符串中的任何一个作为值,可以很容易地通过以下模式实现:
...
"attributes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"controls",
"autoplay",
"muted",
"loop"
]
},
"additionalItems": false
}
...
因此,数组中的值只能是这四个值之一。但是,“控件”必须始终是数组的一部分,而其他三个则是可选的。如果它是一个对象数组,我们可以要求这样做,但是我不确定如何检查具有特定值的数组。
感谢您的帮助!
答案 0 :(得分:3)
您可以使用contains
关键字:
"attributes": {
"type": "array",
"items": {
"type": "string",
"enum": [
"controls",
"autoplay",
"muted",
"loop"
]
},
"contains": {
"const": "controls"
},
"additionalItems": false
}
根据规范:
6.4.6. contains
此关键字的值必须是有效的JSON模式。
如果数组实例中至少有一个包含,则该数组实例对“包含”有效 元素对给定的架构有效。