数组
数组是一个由零个或多个有序项组成的列表;它用方括号分隔。列表中的每个数据项都被分配了一个类型。下方列出的实例代码片段是一个具有三个属性的对象。每个属性的值都是一个数组(分隔符突出显示为黄色)。
{
"x": [ 1, 2, "abc" ],
"y": [ 3, 4, "def" ],
"z": [ 5, 6, "ghi" ]
}
上方的代码片段中的所有三个数组都有相同的定义。每个数组都包含三个数据项,它们按以下顺序排列:(i) 数字项、(ii) 数字项、(iii)字符串项。下方截图显示了此对象的Schema描述。由于这三个数组的定义都是相同的,所以它已在一个名为array_01的全局数组中被创建。这三个数组(x、y和z)中的每一个都引用了全局数组array_01。
在上方截图中,选择了数组x(突出显示为蓝色),其详细信息和约束都显示在相应的输入助手中(参见上方截图)。您可以看到其中对允许的数据项数量做出了约束。该数量可以在“约束”输入助手中编辑并显示在图表中。数组项可以在数组自身的定义中定义,在这种情况下是全局定义array_01(参见下方截图)。
请注意以下几点:
•Unique约束指定数组中的所有数据项都必须是唯一的。
•数据项的编号从0开始。
•3 <= items <= 3和Items: 3..3(参见上方截图),分别表示允许的最小和最大项数。在这种情况下,必须正好有三个数据项。
添加数组项、数组项通配符和contains关键词
数组项、数组项通配符和数组的contains关键词都是通过定义或数组项的上下文菜单添加的。
•数组项通配符允许在数组中包含更广泛的对象。
•contains关键词指定contains关键词的值必须是一个有效的JSON Schema,并且数组中至少有一个元素必须根据引用的Schema对象是有效的。从2019-09版本开始,引入了minContains和maxContains关键词。这些在“详细信息”输入助手中显示为Contains框中的Min和Max属性(参见下方截图),它们定义了有多少个数据项可以匹配被引用的Schema对象。