Skip to main content

JSON Schema

定义

JSON Schema 是一个词汇表,可用于注释和验证JSON文档。

作用

  • 对现有的json数据格式进行描述(字段类型、内容长度、是否必须存在、取值示例等);
  • 是一个描述清晰、人机可读的文档;
  • 自动测试、验证客户端提交的数据;

属性

关键字value描述
$schemahttp://json-schema.org/draft-04/schema#

http://json-schema.org/draft-06/schema#

http://json-schema.org/draft-07/schema#
$schema 关键字状态,表示这个模式与 v4 规范草案书写一致。
$ref引用字段, 通常用于复杂说明
title用它给我们的模式提供了标题。
default任意类型,表示当前对象的默认值。
description通常搭配$ref一起说明使用

{"$ref": "#/definnitions/xxx"}
关于模式的描述。
definitions必须是一个objectobject下所有属性的值都必须是有效的JSON Schema定义子模式
type可以是字符串或者字符串数组,取值必须在Schema基本类型范围内,详见类型type 关键字在我们的 JSON 数据上定义了第一个约束:必须是一个 JSON 对象。
enum必须是数组,而且数组里面的元素至少必须有一个而且不能有重复值。枚举类型
propertiesobject,属性的值必须都是有效的JSON Schema实例定义各种键和他们的值类型,以及用于 JSON 文件中的最小值和最大值。
required字符串数组,至少必须有一个元素,数组内不能有重复值object 类型的哪些字段是必须的存在且不为 null
minimum数值给值设置的约束条件,表示可以接受的最小值。
exclusiveMinimum布尔值,必须与minimum一起使用如果存在 exclusiveMinimum 并且具有布尔值 true,如果它严格意义上大于 minimum 的值则实例有效。
maximum数值给值设置的约束条件,表示可以接受的最大值。
exclusiveMaximum布尔值,必须与maximum一起使用如果存在 exclusiveMinimum 并且具有布尔值 true,如果它严格意义上小于 maximum 的值则实例有效。
multipleOf大于0JSON数值如果通过这个关键字的值分割实例的结果是一个数字则表示紧靠 multipleOf 的数字实例是有效的。
oneOf必须是object Schema实例数组,而且数组里面的元素至少必须有一个而且不能有重复满足其中一个
allOf必须是object Schema实例数组,而且数组里面的元素必须所有而且不能有重复满足全部
anyOf必须是object Schema实例数组任意满足
not必须是一个object,而且是一个有效的JSON Schema取反
maxLength大于等于0的整数字符串实例字符的最大长度数值。
minLength大于等于0的整数字符串实例字符的最小长度数值。
pattern字符串,必须是有效的正则表达式如果正则表达式匹配实例成功则字符串实例被认为是有效的。

类型

类型描述
booleanBoolean
integer不含小数或指数部分的JSON数值类型
number任何JSON类型。 数字包括整数。
string字符串
object对象
array数组
nullThe JSON null value.

Array 类型属性

属性名称类型备注
minItemsnumber最小 item
maxItemsnumber最大 item
uniqueItemsnumber确保数组中的每个项目都是唯一的 [默认:false]
itemsobject数组每项的内容
additionalItemsboolean是否可以额外增加 item,当 item 是单个模式时,additionalItems 关键字是没有意义的,因此不应使用。

Object 类型属性

属性名称类型备注
requiredstring[]object 类型的哪些字段是必须的存在且不为 null
propertiesobject定义各种键和他们的值类型,以及用于 JSON 文件中的最小值和最大值。
maxPropertiesnumber最大属性数量
minPropertiesnumber最小属性数量
dependenciesobject表示哪些属性的存在必须依赖另外一些属性的存在
patternPropertiesobject判断所有属性名匹配上的都必须满足一定的条件
additionalPropertiesobject表示 json 可以出现 object 未定义,但是满足一定条件的数据

参考资料

JSON Schema官网

JSON Schema Validator

JSON Schema Validator 官方文档

JSON Schema 参考书