类型选择器(Any, Multiple等)
JSON Schema视图的“类型”组合框的下拉列表中包含四个不属于JSON类型的“类型”:any、multiple、unconstrained和forbidden。它们实际上是类型选择器。
•any类型选择器选择任何JSON类型。这意味着,在实例中,任何JSON类型将对该特定定义有效。
•multiple类型选择器选择一种或多种JSON类型。这意味着,如果实例类型是Schema中选择的JSON类型之一,则它将对该特定定义有效。
•unconstrained类型选择器(draft-06中的新内容)不对JSON类型设任何约束。这意味着,在实例中,任何JSON类型都对具有该名称的定义有效。
•forbidden类型选择器(draft-06中的新内容)禁止任何JSON类型,即不得有使用该名称的定义存在。
any类型选择器
您可以在选择类型的任何位置选择any类型选择器。当将一个定义添加到Schema时,any是默认的类型选择。它指定任何JSON类型都是有效的。这意味着,实例类型可以是对象、数组或任何原子类型(string、number、integer、boolean和null)。
在上方截图中,子Schema具有Any类型。因此,所有JSON类型都对此定义有效。以下内容是隐含的,并在用户界面中相应实现:
•由于允许使用对象,因此会自动创建一个属性框(参见上方截图)。默认情况下,属性框被定义为允许有任意数量的任何类型的属性(通过一个Any类型的属性通配符)。您可以根据需要修改属性定义。
•由于允许使用数组,因此会自动创建一个数据项框(参见上方截图)。默认情况下,数组项框被定义为允许有任意数量的任何类型的数组项(通过一个Any类型的数组项通配符)。您可以根据需要修改项定义。
•由于允许使用字符串和数值(数字和整数)类型,因此可以在“约束”输入助手中定义对这些原子类型的约束。
因此,所有这些类型都使用Any类型选择器进行隐式定义。要将类型更改为特定类型,请选择该类型。要将类型定义为对象和数组,还有另一种方式:右键单击对象或数组并选择设置为显式。这会使该类型变成所选类型并删除其他类型,或禁用定义的对象/数组类型。
multiple类型选择器
您可以在选择类型的任何位置选择multiple类型选择器。它允许您通过选中所需类型来选择一种或多种JSON类型(参见下方截图)。然后您可以在“约束”输入助手中为选定类型指定约束。
在上方截图中,子Schema允许使用string、null和array类型。对这些类型的约束可以在“约束”输入助手中定义(参见截图)。
•字符串约束可以在“约束”输入助手中定义。
•不能为Null类型定义任何约束。
•将自动创建数组项框。您可以定义允许的数组项的数量和类型。
在实例文档中,所选类型允许存在于与子Schema对应的位置。
unconstrained和forbidden类型选择器
您可以在选择类型的任何位置选择unconstrained和forbidden类型选择器。您可以用它们来分别指定对象可以是任何类型,或者不允许使用该名称的对象。
在上方截图中,一个定义具有两个属性。PropertyOne可以具有一个任何类型的值,但不允许使用名为PropertyTwo的属性(参见截图)。在文本形式中,此结构看起来像下方的代码片段。
"Definition": {
"properties": {
"PropertyOne": true,
"PropertyTwo": false
}
}