JSON Schema 是一种基于 JSON 格式的规范,它定义了如何描述 JSON 数据的结构和验证 JSON 数据的规则。通过使用 JSON Schema,可以确保 JSON 数据满足特定的格式要求,这对于数据交换和API服务尤其重要。
JSON Schema 允许你定义以下内容:
1. **数据类型**:指定值可以是字符串、数字、对象、数组、布尔值或null。
2. **对象属性**:描述一个对象可以拥有哪些属性,这些属性的类型是什么,哪些是必需的,哪些是可选的。
3. **数组**:指定数组中元素的类型,以及数组的最小长度和最大长度。
4. **字符串**:对字符串进行限制,比如最小长度、最大长度、正则表达式模式匹配等。
5. **数字**:对数字进行限制,比如最小值、最大值、是否必须是整数等。
6. **多重选择**:允许一个值符合多个指定的类型或者条件。
7. **条件验证**:根据数据的其他部分,可以应用不同的验证规则。
8. **嵌套描述**:可以描述复杂的数据结构,如对象内的对象,数组内的对象等。
9. **默认值**:为某些项指定默认值。
10. **格式验证**:对于一些标准格式的字符串,如日期时间、邮箱、URI等,可以进行特殊的格式验证。
JSON Schema 通常用于:
- 自动化验证客户端发送到服务器的数据。
- 自动生成文档或用户界面。
- 验证服务器端发出的响应数据。
一个简单的 JSON Schema 示例可能如下所示:
```json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Person",
"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 zero.",
"type": "integer",
"minimum": 0
}
},
"required": ["firstName", "lastName"]
}
```
在这个例子中,我们定义了一个“Person”对象,它有三个属性:`firstName` 和 `lastName` 是字符串类型,而 `age` 是一个非负整数。`firstName` 和 `lastName` 是必需的,而 `age` 是可选的。这个 Schema 可以用来验证是否每个 `Person` 对象都有 `firstName` 和 `lastName` 属性,并且 `age` 如果提供了,必须是非负整数。