JSON Schema 是一个用来描述 JSON 数据格式的约束语言,可以用于验证 JSON 数据的有效性、文档生成、API 文档生成等场景。它使用 JSON 格式表示,可以定义 JSON 对象的属性、数据类型、枚举值、格式规则等。
JSON Schema 的基本构成是一个 JSON 对象,包含以下常见关键字:
- $schema:用于指定所使用的 JSON Schema 版本。
- title:用于指定 JSON Schema 的标题。
- type:用于指定属性的数据类型,包括字符串、数字、布尔、数组、对象等。
- properties:用于定义属性的约束条件,是一个 JSON 对象,键为属性名,值为该属性的约束条件。
- required:用于指定必须存在的属性,是一个数组,包含需要的属性名。
- additionalProperties:用于指定是否允许额外的属性存在。
- enum:用于指定枚举值,是一个数组,包含合法的取值。
除了上述常见关键字外,JSON Schema 还提供了许多其他关键字来定义更复杂的约束条件,例如:
- pattern:用于指定字符串的正则表达式格式。
- format:用于指定字符串的特定格式,如日期、时间、邮件地址等。
- minimum、maximum:用于指定数字的最小值和最大值。
- uniqueItems:用于指定数组元素是否唯一。
- items:用于定义数组元素的约束条件。
- dependencies:用于指定属性之间的依赖关系。
使用 JSON Schema 可以轻松地进行数据验证。例如,假设有以下的 JSON 数据和对应的 JSON Schema:
// JSON 数据
{
"name": "Alice",
"age": 20,
"email": "[email protected]",
"books": ["book1", "book2"]
}
// JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "User",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"age": {
"type": "integer",
"minimum": 0,
"maximum": 120
},
"email": {
"type": "string",
"format": "email"
},
"books": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["name", "email"]
}
可以使用 JSON Schema 验证上述 JSON 数据是否满足约束条件。验证结果可以告知数据是否有效,以及不满足约束条件的具体原因。