什么是 JSON Schema?
JSON Schema 是一个描述和验证 JSON 数据结构的强大工具。Schema 可以理解为模式或规则。
优势:
- 描述现有数据格式。
- 提供清晰的人机和机器可读文档。
- 验证数据:
- 自动化测试。
- 确保客户端提交数据的格式。
定义一个最简单的 JSON Schema:{}
它包含许多关键字/属性。如:
关键字 | 描述 | 事例 |
---|---|---|
$schema | 声明 JSON Schema 状态(版本/规范控制) | { "$schema": "http://json-schema.org/schema#" } |
$id | 唯一标识 URI | { "$id": "http://yourdomain.com/schemas/myschema.json" } |
title | 标题 | "Production" |
description | 描述 | "a produciton info description" |
type | 类型 | "number" | ["number","string"] |
properties | 属性配置 | { "test": { "type": "number" } } |
下面解析 JSON Schema 中包含的关键字含义及用法。
类型关键字
string
、number
、object
、array
、boolean
、null
。
字符串(string)
string
类型用于文本字符串。它可能包含 Unicode 字符。
长度:
属性 | 描述 | 默认值 |
---|---|---|
minLength | 字符串最小长度,非负数 | |
maxLength | 字符串最大长度,非负数 | |
pattern | 正则表达式 | |
format | 格式 |
内置 format
列表:
- 日期和时间
"date-time"
:日期和时间,如2018-11-13T20:20:39+00:00
。"time"
:时间,如20:20:39+00:00
。"date"
:日期,如2018-11-13
。
- Email 地址
"email"
:互联网电子邮件地址,请参阅 RFC 5322,第 3.4.1 节。"idn-email"
:电子邮件地址的国际化形式,请参阅 RFC 6531。
- 主机名
"hostname"
:主机名,请参阅 RFC 1034 第 3.1 节。"idn-hostname"
:国际化的主机名,请参阅 RFC5890 第 2.3.2.3 节。
- IP 地址
"ipv4"
:IPv4 地址,根据 RFC 2673 第 3.2 节中定义的点分四进制 ABNF 语法。"ipv6"
:IPv6 地址,如 RFC 2373 第 2.2 节中所定义。
- 资源标识符
"uri"
:通用资源标识符(URI),根据 RFC3986。"uri-reference"
:URI 参考(URI 或相对参考), 参考 RFC3986, section 4.1。"iri"
: 国际化的 "uri",参考 RFC3987。"iri-reference"
:国际化 "uri-reference",参考 RFC3987。- 如果 Schema 中的值具有相对于特定源路径(例如,来自网页的链接)的能力,则通常更好的做法是使用
"uri-reference"
(或"iri-reference"
)而不是"uri"
(或"iri"
)。"uri"
仅当路径必须是绝对路径时才应使用。
- URI 模板
"uri-template"
:URI 模板(任何级别),参考 RFC6570,如果您尚不知道 URI 模板是什么,则可能不需要此值。
- JSON 指针
"json-pointer"