JSON Schema 概述
JSON Schema 是一种内容规范语言,专门用于验证 JSON 数据的结构。它帮助我们定义对象的结构,以及对象属性中哪些值是合法的。JSON Schema 提供了清晰、人类可读且机器可读的文档说明,使得我们在处理数据交互时更加规范和严谨。
JSON Schema 的结构
由于 JSON 格式主要包含对象、数组以及键值对元素,因此 JSON Schema 也利用这些键值对来进行模式处理和内容验证。模式处理元素包括但不限于以下几种:
- "$schema":用于指定 JSON Schema 的版本。
- title 和 description:用于提供关于 Schema 的基本信息和说明。
- required:这是一个元素数组,用于指示哪些属性必须存在于 JSON 数据中。
- additionalProperties:用于指示除了定义的属性之外,是否允许存在其他属性。
JSON 内容的定义方式
在定义 JSON 数据结构时,Schema 有特定的规则:
- 当定义一个 JSON 对象 时,JSON Schema 使用键值对 "type":"object"。
- 当定义 数组 时,JSON Schema 使用键值对 "type":"array"。
实例演示
下面是一个关于“选民信息”的 JSON Schema 示例:
{
"$id": "https://example.com/person.schema.json",
"$schema": "https://json-schema.org/draft-07/schema",
"title": "Voters information",
"type": "object",
"properties": {
"firstName": {
"type": "string",
"description": "The person‘s first name."
},
"lastName": {
"type": "string",
"description": "The person‘s last name."
},
"age": {
"description": "Age in years which must be equal to or
greater than eighteen in order to vote.",
"type": "integer",
"minimum": 18
}
}
}
符合该 Schema 的数据示例
根据上述 Schema,一个合法的 JSON 数据示例如下:
{
"firstName": "Indra",
"lastName": "Sen",
"age": 20
}
Schema 结构解析
让我们来看看上述 JSON Schema 中具体包含了哪些关键要素:
- $id 关键字:用于唯一标识该 Schema。
- $schema 关键字:声明了所使用的 JSON Schema 标准版本。
- title 注释关键字:为 Schema 提供了标题说明。
- properties 验证关键字:定义了对象包含的具体属性及其验证规则。
- 三个具体的键:firstName(名)、lastName(姓)和 age(年龄),每个键都带有自己的描述和类型约束。
- type 实例数据模型:声明了顶层类型为“object”。
- minimum 验证关键字:针对 age 键进行了数值限制,规定最小值为 18。