Altova XMLSpy 2023 Enterprise Edition

JSON Schema视图的“类型”组合框的下拉列表中包含四个不属于JSON类型的“类型”:anymultipleunconstrainedforbidden。它们实际上是类型选择器。

 

any类型选择器选择任何JSON类型。这意味着,在实例中,任何JSON类型将对该特定定义有效。

multiple类型选择器选择一种或多种JSON类型。这意味着,如果实例类型是Schema中选择的JSON类型之一,则它将对该特定定义有效。

unconstrained类型选择器(draft-06中的新内容)不对JSON类型设任何约束。这意味着,在实例中,任何JSON类型都对具有该名称的定义有效。

forbidden类型选择器(draft-06中的新内容)禁止任何JSON类型,即不得有使用该名称的定义存在。

 

any类型选择器

您可以在选择类型的任何位置选择any类型选择器。当将一个定义添加到Schema时,any是默认的类型选择。它指定任何JSON类型都是有效的。这意味着,实例类型可以是对象、数组或任何原子类型(stringnumberintegerbooleannull)。

JSONAny01

在上方截图中,子Schema具有Any类型。因此,所有JSON类型都对此定义有效。以下内容是隐含的,并在用户界面中相应实现:

 

由于允许使用对象,因此会自动创建一个属性框(参见上方截图)。默认情况下,属性框被定义为允许有任意数量的任何类型的属性(通过一个Any类型的属性通配符)。您可以根据需要修改属性定义。

由于允许使用数组,因此会自动创建一个数据项框(参见上方截图)。默认情况下,数组项框被定义为允许有任意数量的任何类型的数组项(通过一个Any类型的数组项通配符)。您可以根据需要修改项定义。

由于允许使用字符串和数值(数字和整数)类型,因此可以在“约束”输入助手中定义对这些原子类型的约束。

 

因此,所有这些类型都使用Any类型选择器进行隐式定义。要将类型更改为特定类型,请选择该类型。要将类型定义为对象和数组,还有另一种方式:右键单击对象或数组并选择设置为显式。这会使该类型变成所选类型并删除其他类型,或禁用定义的对象/数组类型。

 

multiple类型选择器

您可以在选择类型的任何位置选择multiple类型选择器。它允许您通过选中所需类型来选择一种或多种JSON类型(参见下方截图)。然后您可以在“约束”输入助手中为选定类型指定约束。

JSONMultiple01

在上方截图中,子Schema允许使用stringnullarray类型。对这些类型的约束可以在“约束”输入助手中定义(参见截图)。

 

字符串约束可以在“约束”输入助手中定义。

不能为Null类型定义任何约束。

将自动创建数组项框。您可以定义允许的数组项的数量和类型。

 

在实例文档中,所选类型允许存在于与子Schema对应的位置。

 

unconstrained和forbidden类型选择器

您可以在选择类型的任何位置选择unconstrainedforbidden类型选择器。您可以用它们来分别指定对象可以是任何类型,或者不允许使用该名称的对象。

JSONUnconstrainedForbidden

在上方截图中,一个定义具有两个属性。PropertyOne可以具有一个任何类型的值,但不允许使用名为PropertyTwo的属性(参见截图)。在文本形式中,此结构看起来像下方的代码片段。

 

"Definition": {

 "properties": {

         "PropertyOne": true,

         "PropertyTwo": false

 }

}

 

 

© 2017-2023 Altova GmbH