JSON 模式能否描述一个数组的数组必须具有所有相同长度的元素的限制?
Can a JSON Schema describe the constrant that an array of arrays must have elements of all the same length?
基本上,我正在尝试查看是否可以编写一个接受数组数组的架构,以便所有内部数组彼此具有相同的长度。例如,架构应该 接受 以下内容:
[[1, 2], [3, 4], [5, 6]]
[[1], [2], [3]]
[[1 2 3 4]]
但拒绝以下内容:
[[1], [2, 3], [4, 5]]
[[1 2 3 4 5], [6]]
JSON Schema 可以做到这一点吗?如果可以,怎么做?
您可以使用 items
、maxItems
和 minItems
关键字强制嵌套数组具有给定的长度:
{
"type" : "array",
"items" : {
"type" : "array",
"minItems" : 2,
"maxItems" : 2
}
}
虽然您不能(通常)强制执行 属性 所有嵌套数组都具有相同数量的元素,但如果不是每个长度都是可能的,您可以尝试使用 oneOf
:
{
"type" : "array",
"items" : {
"oneOf" : [{
"type" : "array",
"minItems" = 1,
"maxItems" = 1
}, {
"type" : "array",
"minItems" = 2,
"maxItems" = 2
}
]
}
}
基本上,我正在尝试查看是否可以编写一个接受数组数组的架构,以便所有内部数组彼此具有相同的长度。例如,架构应该 接受 以下内容:
[[1, 2], [3, 4], [5, 6]]
[[1], [2], [3]]
[[1 2 3 4]]
但拒绝以下内容:
[[1], [2, 3], [4, 5]]
[[1 2 3 4 5], [6]]
JSON Schema 可以做到这一点吗?如果可以,怎么做?
您可以使用 items
、maxItems
和 minItems
关键字强制嵌套数组具有给定的长度:
{
"type" : "array",
"items" : {
"type" : "array",
"minItems" : 2,
"maxItems" : 2
}
}
虽然您不能(通常)强制执行 属性 所有嵌套数组都具有相同数量的元素,但如果不是每个长度都是可能的,您可以尝试使用 oneOf
:
{
"type" : "array",
"items" : {
"oneOf" : [{
"type" : "array",
"minItems" = 1,
"maxItems" = 1
}, {
"type" : "array",
"minItems" = 2,
"maxItems" = 2
}
]
}
}