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 可以做到这一点吗?如果可以,怎么做?

您可以使用 itemsmaxItemsminItems 关键字强制嵌套数组具有给定的长度:

{
    "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
            }
        ]
    }
}