快速开始
我们用一个例子来介绍说明 JSON Schema,虽然不可能面面俱到,但是对JSON Schema的基本概念、语法、使用有个较为全面的了解是完全没问题的。
这里假设我们有一个产品类目接口是用JSON Data格式来交互的,这个类目的产品信息字段有:
-
产品ID:productId
-
产品的名称:productName
-
产品的销售价格:price
-
可选字段的产品标签:tags
产品类目数据简单例子:
{
"productId": 1,
"productName": "A green door",
"price": 12.50,
"tags": [ "home", "green" ]
}
当你看到这个产品类目JSON Data数据时,你是不是有一些疑问,比如:
-
产品ID字段是啥,整型?长整型?
-
产品的名称字段是必填的吗。
-
价格字段可以是零吗,或者小数点精度是几位呢。
-
产品标签字段都是字符串类型吗。
为了解决这些问题,我们需要使用元规则对这些字段进行定义解释、数据验证。JSON Schema就是这么一个帮助我们解决这些问题的工具,它符合IETF标准。
1、开始使用schema
描述JSON Schema文档的格式可以是JSON,也可以是xml,这里以JSON为例。因此要特别要区分JSON Data 与JSON Schema的关系,JSON Schema是对JSON Data字段的定义解释、数据校验。
接下来,我们从一个基础的JSON schema开始,了解其几个关键字
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://example.com/product.schema.json",
"title": "Product",
"description": "A product in the catalog",
"type": "object"
}
-
$schema关键字:用于描述JSON schema满足特定草案标准的版本,一般用于版本控制
-
$id关键字:定义了一个URL,类似于身份id,可以用于对当前或其他JSON schema文档的引用
-
title和description关键字:没有包含到数据校验里面去,仅仅用于描述
-
type关键字:是对JSON Data文档格式的约束,这个例子中要求的是一个JSON Object
这里涉及了JSON Schema三种概念术语: Schema的属性关键字、Schema的注释关键字、Schema的数据校验关键字,后面都是围绕着这几个概念的关键字展开。
1.1、JSON Data 属性定义
productId是一个数值型的字段,由于它是产品的身份标识,因此它也是唯一必填的
我们上面的JSON schema例子进行拓展,增加属性关键字来对productId解释说明
-
properties关键字:用于对JSON Data的字段进行描述、解释。这里增加了对productId、pruductName字段的描述、类型限制
-
required关键字:是一个list,用于声明JSON Data字段是否必填,这里增加product