JSON Schema可以描述一个数组数组必须具有相同长度的元素的常量吗?

时间:2015-11-24 10:08:49

标签: arrays json jsonschema

基本上,我试图查看是否可以编写一个接受数组数组的模式,这样所有内部数组的长度都相同。例如,架构应接受以下内容:

[[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可以执行此操作吗?如果可以,请执行此操作?

1 个答案:

答案 0 :(得分:4)

您可以使用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
            }
        ]
    }
}