网站首页 > 知识剖析 正文
介绍
JSON Schema是用来标记和校验JSON数据,类似于XMLSchema,可用在自动化测试验证JSON数据。
官网:http://json-schema.org/
最新版本:2019-09,最常用版本:draft 04。(目前各类编程语言对draft 04支持最广泛)
举个例子
假如你有一个接口响应数据,返回了用户信息注册相关的信息,内容如下:
在上面的例子中,注册接口要求提供code,msg,copyright,data4个成员,其中code是数值,msg、copyright是字符串,data是一个对象,data又包含了id、reg_name、mobile_phone3个成员。
如果想对code=0和msg=OK进行断言,可以使用JSON Schema来规范,对应的JSON Schema如下:
语法规则
既然JSON Schema是用来标记和校验JSON数据,那么咱们首先介绍下json中的数据类型,如下:
通过上述6种类型自由组合可以构建更复杂的JSON结构,比如上面的用户注册响应结果。JSON Schema会针对这6种数据类型进行各种各样的约束。JSON Schema本身也是一种JSON数据,也要遵循JSON格式。
01
最外层字段
type可选值:
例子:
符合要求的JSON:
array常用属性:
例子:
符合要求的JSON:
number常用属性:
例子:
符合要求的JSON:
在number中没有等于的约束,那怎么解决呢?答案:minimum和maximum同一个值就行了比如说5,因为minimum>=5加上maximum<=5的取值范围只有5。
string常用属性:
例子:
符合要求的JSON:
在string中没有等于的约束,怎么解决呢?两种方式,第一种是用正则表达式,但是不在这里展开讲,有兴趣的小伙伴可以看我另一篇《正则表达式,看着一篇就够了》。第二种是用枚举enum。
枚举enum:
符合要求的JSON:
- "a"或者"b"或者"c"其中一个,如果想实现字符串等于某个值,写成这样:"enum": ["a"],目前枚举只支持string类型。
- "a"或者"b"或者"c"其中一个,如果想实现字符串等于某个值,写成这样:"enum": ["a"],目前枚举只支持string类型。
- "a"或者"b"或者"c"其中一个,如果想实现字符串等于某个值,写成这样:"enum": ["a"],目前枚举只支持string类型。
内部引用definitions和$ref :
definitions用来定义公共约束,注意definitions只是定义约束如果没有引用则约束不生效。$ref用来引用definitions中定义的约束。
例子:
上述jsonschema描述:必须是Object类型,并且有mobilephone_1和mobilephone_2属性,属性的约束来自definitions#mobilephone。
符合要求的JSON:
02
聚合关键字allOf、anyOf、oneOf、not
- allOf 必须满足所有的约束才算通过
例子:
符合要求的JSON:
- anyOf 必须满足任意一个或多个约束才算通过
例子:
符合要求的JSON:
- oneOf 必须满足任意一个约束才算通过
例子:
符合要求的JSON:
- not 不是给出的约束即可
例子:
符合要求的JSON:
- 上一篇: Spring的装配方式xml
- 下一篇: Spring 基于 XML 的 IOC
猜你喜欢
- 2024-11-23 Spring中源码中涉及的「设计模式」知多少?
- 2024-11-23 spring阅读--容器及实例化
- 2024-11-23 Java教程:学会写Starter-你就懂了SpringBoot自动配置
- 2024-11-23 SpringBoot学习笔记三之表述层
- 2024-11-23 如何使用Java API操作HDFS系统?
- 2024-11-23 Spring IOC容器XML配置示例
- 2024-11-23 xml 配置文件规范 校验
- 2024-11-23 阿里P7大神,Java学习之路-IO流与XML,超赞分享
- 2024-11-23 Java基础教程:dubbo源码解析-服务暴露与发现
- 2024-11-23 解决springboot的pom.xml文件第一行报错问题
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)