JSON 每个架构 "oneOf"?
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
}
}
]
}
}
}``
是否可以制作一个 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
}
}
]
}
}
}``