[英]JSON Schema “oneOf” each?
是否可以制作一个 JSON 模式来验证一个数组是否包含至少 1 个三个非重叠类型的实例。 一个简单的例子是一个任意长度的数字数组,其中至少包含一个 1、一个 2 和一个 3。
我不能使用allOf
因为这将验证数组中的每个数字都是 1、2 和 3 - 没有数字可以是
我不能使用anyOf
因为那样我就可以拥有一个只有一个元素的数组
我不能使用oneOf
因为,我可以再一次拥有一个带有一个数字的数组
(......我也不清楚我应该使用contains
键还是在items
键中)
我正在寻找的是一种表达这些项目“每个”的方式。 JSON 架构是否可行?
这是一个带有oneOf
的损坏示例
{
"type": "object",
"properties": {
"numbers": {
"type": "array",
"contains": {
"oneOf": [
{
"const": 1
},
{
"const": 2
},
{
"const": 3
}
]
},
"items": {
"type": "number"
}
}
}
}
[1] – 不应验证
[1,2] - 不应该验证
[1,2,3] - 应该验证
[1,2,3,4] - 应该验证
您可以将contains
放在allOf
:
{
"type": "object",
"properties": {
"numbers": {
"type": "array",
"allOf": [
{
"contains": {
"const": 1
}
},
{
"contains": {
"const": 2
}
},
{
"contains": {
"const": 3
}
}
]
}
}
}``
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.