如何在 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],
]
我认为 JSON Schema 不可能做到这一点,因为您无法向 JSON Schema 提供与实例 JSON 相关的动态值。
是否可以重组数据并翻转维度?通过这种方式,您可以将内部数组设置为具有设定的维度,并保留外部维度。然后你只需转换你的模式:
{
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]
]
也会因为同样的原因失败。