JSON Schema
正如XML Schema定义XML文档的结构和内容一样,JSON Schema指定JSON文档中的JSON数据的结构。它指定需要哪些数据字段以及如何表示值。有关JSON Schema和JSON Schema规范的更多信息,请参见此处。
JSON Schema本身就是一个JSON对象。词法上,整个Schema都包含在大括号(JSON对象的分隔符)中(参见下方代码片段)。Schema以JSON语法编写,通常存储在带有.json扩展名的文件中。该文件由\$schema关键词标识为JSON Schema,该关键词应是顶级对象的第一个关键词。此关键词应具有以下值之一:
•draft-07之前的版本:"http://json-schema.org/draft-N/(hyper-)schema#",其中N代表版本号(04、06或07)。
•draft-2019-09以后的版本:"https://json-schema.org/draft/YYYY-MM/(hyper-)schema",其中YYYY和MM分别代表草案的年份和月份,例如2019-09。
下方示例展示了如何使用\$schema关键词。
{
"\$schema": "https://json-schema.org/draft/2020-12/schema",
...
}
请注意: | 尽管\$schema关键词可以具有值"http://json-schema.org/schema#",它指定了Schema的最新版本,但最好使用一个能识别特定版本的URL。有关更多信息,请参见JSON Schema版本。 |
在XMLSpy中,您可以在JSON Schema视图中以图形方式创建JSON Schema。有关此操作,请参见JSON Schema视图部分。除了JSON Schema视图中的Schema编辑功能以外,还提供以下与chema相关的功能:
•使用XMLSpy的JSON验证器进行验证:将JSON Schema分配给JSON实例文档,并在XMLSpy中验证该实例文档。有关更多信息,请参见验证JSON文档。
•设置JSON验证选项。
•从JSON实例生成JSON Schema:如果JSON实例文档已存在,则可以从该文档生成JSON Schema。随后您可以根据需要编辑该Schema。
•JSON和XML之间的转换:您可以在这两种格式之间转换文档。
术语
下方给出了在图形用户界面和本文档中常用的JSON Schema术语的定义。
术语 | 定义 |
Schema | JSON Schema文档中的顶级Schema对象;Schema文件。 |
对象 | 包含零个或多个属性的JSON类型。 |
属性 | 一个对象的key:value对。该对象的值可以是任何JSON数据类型。 |
关键词 | 一个对象的key:value对的key部分。它始终是一个字符串。 |
子Schema | 作为运算符或依赖项的子级的对象。 |
定义 | 每个JSON类型的完整描述。定义可以是全局的或局部的。 |
数组 | 一个由任何JSON数据类型的零个或多个items组成的以逗号分隔的有序列表。 |
原子类型 | String、number、integer、boolean以及null、number、integer、boolean以及null JSON数据类型。 |
类型选择器 | any和multiple类型,分别选择任意和多个类型。 |
运算符 | 出现次数选择器,可以作为定义的子级添加。请参见运算符部分。 |
JSON数据类型
对象属性值和数组项可以是以下类型:
•string(必须用引号括起来):一个字符串还可以被指定为具有某种格式,例如date-time或email格式。
•number:带有小数部分的数字,包括整数。
•integer:不带小数部分的数字;它是number类型的子集。
•boolean(true/false,不括在引号中)
•object:当在另一个对象中使用时,允许嵌套数据。
•array:与对象相比,它允许您构建更复杂的结构。
•null(null,不括在引号中)