如何在JSON Schema中定义二维矩形数组?

问题描述 投票:0回答:2

如何在 JSON schema 中定义二维数组?问题是我知道如何定义一个具有精确的连续项目计数的二维数组:

{
    type: "array",
    items: {
        type: "array",
        items: {
            type: "number",
            minItems: 2,
            maxItems: 2
        }
    },
}

但是我无法理解,当这个数字不固定时,如何定义一个在每行中具有完全相同数量的项目的数组。换句话说,我需要定义一个二维数组的矩形形状。

此数据应该有效:

[
    [1, 2, 3],
    [1, 2, 3],
    [1, 2, 3],
]

并且此数据也应该有效:

[
    [1, 2, 3, 4],
    [1, 2, 3, 4],
    [1, 2, 3, 4],
]

这不应该:

[
    [1, 2, 3],
    [1, 2],
    [1, 2, 3],
]

这不应该:

[
    [1, 2, 3, 4],
    [1, 2, 3],
    [1, 2, 3],
]
arrays json jsonschema
2个回答
1
投票

我认为 JSON Schema 不可能做到这一点,因为您无法向 JSON Schema 提供与实例 JSON 相关的动态值。


0
投票

是否可以重组数据并翻转维度?通过这种方式,您可以将内部数组设置为具有设定的维度,并保留外部维度。然后你只需转换你的模式:

{
    type: "array",
    items: {
        type: "array",
        items: {
            type: "number",
            minItems: 3,
            maxItems: 3
        }
    },
}

例如,上述第一个例子将被转化为:

[
    [1, 1, 1],
    [2, 2, 2],
    [3, 3, 3],
]

因此它适合架构,而你的第二个例子:

[
    [1, 1, 1],
    [2, 2],
    [3, 3, 3],
]

会失败,因为它没有设置长度三,而你的第三个例子:

[
    [1, 1, 1],
    [2, 2, 2],
    [3, 3, 3],
    [4]
]

也会因为同样的原因失败。

© www.soinside.com 2019 - 2024. All rights reserved.