东莞企业怎么做网站建设,京东优惠券网站建设,黄页堆广,wordpress 中文 字体大小文章目录一、简介和安装二、JSON Schema2.1 JSON Schema入门案例2.2 JSON Schema校验方式-2种2.2.1 在线工具校验2.2.2 python代码校验2.2.3 python代码校验的错误终端提示三、JSON Schema语法3.1 type关键字3.1.1 type语法3.1.2 type示例3.2 properties关键字3.2.1 properties…文章目录一、简介和安装二、JSON Schema2.1 JSON Schema入门案例2.2 JSON Schema校验方式-2种2.2.1 在线工具校验2.2.2 python代码校验2.2.3 python代码校验的错误终端提示三、JSON Schema语法3.1 type关键字3.1.1 type语法3.1.2 type示例3.2 properties关键字3.2.1 properties语法3.2.2 properties示例13.2.3 properties示例23.3 required关键字3.3.1 required语法3.3.2 required示例3.4 const关键字3.4.1 const语法3.4.1 const示例3.5 pattern关键字3.5.1 pattern语法3.5.2 pattern示例四、JSON Schema综合案例一、简介和安装**概念**校验接⼝返回响应结果的全部字段更进一步的断言断言只能校验字段的值。校验内容字段值字段名 或 字段类型校验流程定义 校验规则json语法比对 响应数据(实际结果) 是否 符合 校验规则安装jsonschema:pip install jsonschema -i https://pypi.douban.com/simple/二、JSON SchemaJson Schema: 用来定义json数据约束的一个标准2.1 JSON Schema入门案例// JSON Schema把汉字写的“校验规则描述转为JSON Schema语法如下{type:object,properties:{success:{type:boolean},code:{type:integer},message:{type:string}},required:[success,code,message]}// json数据待校验数据{success:true,code:100,message:操作成功}2.2 JSON Schema校验方式-2种2.2.1 在线工具校验http://json-schema-validator.herokuapp.comhttps://www.jsonschemavalidator.net 【推荐】2.2.2 python代码校验实现步骤1、导包importjsonschema2、定义 jsonschema格式 数据校验规则3、调⽤ jsonschema.validate(instancejson数据,schemajsonshema规则)//instance:实例查验校验结果校验通过返回 None校验失败schema 规则错误返回 SchemaErrorjson 数据错误返回 ValidationError案例 入门案例 # 1. 导包importjsonschema# 2. 创建 校验规则schema{type:object,properties:{success:{type:boolean},code:{type:integer},message:{type:string}},required:[success,code,message]}# 3. 准备 待校验数据用 python语法表示的 json数据json_data{success:True,# 布尔类型的python为Truecode:100.3,message:操作成功}# 4. 调用方法 进行校验resjsonschema.validate(instancejson_data,schemaschema)# 5. 查看校验结果print(校验结果,res)通过结果校验结果 None2.2.3 python代码校验的错误终端提示1、SchemaError校验规则中有语法错误2、ValidationErrorjson数据与校验规则不符导致校验失败。三、JSON Schema语法JSON Schema 关键字描述type表示待校验元素的类型properties定义待校验的JSON对象中 各个key-value对中value的限制条件required定义待校验的JSON对象中 必须存在的keyconstJSON元素必须等于指定的内容pattern使用正则表达式约束字符串类型数据3.1 type关键字type 用于限定待校验JSON元素所属的数据类型。type取值对应的python数据类型描述objectobject对象arraylist 列表数组integerint整数numberfloat或int数字nullNone空boolean True、Falsebool布尔stringstr字符串3.1.1 type语法{ type: 数据类型 }3.1.2 type示例# 导包importjsonschema# 校验规则 (json语法)schema{type:object}# 数据# json_data 100# json_data 100.2# json_data hello# json_data [1, 2, 3, 4]# json_data None# json_data Truejson_data{a:1,b:2}# 调用方法resjsonschema.validate(instancejson_data,schemaschema)# 查看结果print(校验结果,res)3.2 properties关键字**说明**是 type关键字的辅助。用于 type 的值为 object 的场景。**作用**指定对象中每个字段的校验规则。 可以嵌套使用。3.2.1 properties语法语法 { type: object, properties: { 字段名1:{规则}, 字段名2:{规则}, ...... } }3.2.2 properties示例1需求1、已知JSON数据2、要求定义每个一级字段的数据类型# 导包importjsonschema# 校验规则根据测试数据写校验规则schema{type:object,properties:{success:{type:boolean},code:{type:integer},message:{type:string},money:{type:number},address:{type:null},data:{type:object},luckyNumber:{type:array}}}# 测试数据json_data{success:True,code:10000,message:操作成功,money:6.66,address:None,data:{name:tom},luckyNumber:[6,8,9]}# 调用方法校验resjsonschema.validate(instancejson_data,schemaschema)# 查看校验结果print(校验结果,res)3.2.3 properties示例2需求1、已知JSON数据2、要求定义JSON对象中包含的所有字段及数据类型# 导包importjsonschema# 校验规则schema{type:object,properties:{success:{type:boolean},code:{type:integer},message:{type:string},money:{type:number},address:{type:null},data:{type:object,properties:{name:{type:string},age:{type:integer},height:{type:number}}},luckyNumber:{type:array}}}# 测试数据json_data{success:True,code:10000,message:操作成功,money:6.66,address:None,data:{name:tom,age:18,height:1.81},luckyNumber:[6,8,9]}# 调用方法校验resjsonschema.validate(instancejson_data,schemaschema)# 查看校验结果print(校验结果,res)3.3 required关键字**作用**定义待校验的Json对象中必须存在的key。说明用于限制JSON对象中必须包含哪些key 该关键字的值是一个数组 而数组中的元素必须是字符串而且必须是唯一的3.3.1 required语法语法: { required: [字段名1, 字段名2, ...] }3.3.2 required示例需求1、已知JSON数据2、要求JSON对象中必须包含success、 code、message等字段# 导包importjsonschema# 待测数据json_data{success:True,code:10000,message:操作成功,money:6.66,address:None,data:{name:tom,age:18,height:1.81},luckyNumber:[6,8,9]}# 校验规则schema{type:object,properties:{success:{type:boolean},code:{type:integer},message:{type:string},money:{type:number},address:{type:null},data:{type:object,required:[name,age,height]},luckyNumber:{type:array},},required:[success,code,message,money,address,data,luckyNumber]}# 调用方法resjsonschema.validate(instancejson_data,schemaschema)# 查看结果print(校验结果,res)3.4 const关键字**作用**用于校验JSON元素必须等于指定的内容 。等价于 断言中 用法说明如果待校验的JSON元素的值和该关键字指定的值相同 则通过校验。否则 无法通过校验该关键字的值可以是任何值 包括null3.4.1 const语法语法: { 字段名{const: 具体值} }3.4.1 const示例# 导包importjsonschema# 待测试数据data{success:True,name:李四,height:1.93,addr:None}# 校验规则schema{type:object,properties:{success:{const:True},name:{const:李四},height:{const:1.93},addr:{const:None}}}# 调用方法resjsonschema.validate(instancedata,schemaschema)# 查看结果print(res)3.5 pattern关键字**作用**指定正则表达式对字符串进行模糊匹配正则表达式用不常用的符号排列组合从大量 字符串 数据中按指定条件 筛选 数据。基础正则举例 1 包含字符串hello 2 以字符串开头 ^: ^hello 如hello,world 3 以字符串结尾 $: hello$ 如中国,hello 4 匹配[]内任意1个字符[]: [0-9]匹配任意⼀个数字 [a-z]匹任意一个小写字母 [cjfew9823]匹配任意一个 5 匹配指定次数{}: [0-9]{11}匹配11位数字。说明0-9之间的任意数字要出现11次。 匹配手机号^[0-9]{11}$ 说明以数字开头0-9之间的任意数字要出现11次以数字结尾说明正则表达式 字符串的匹配模式包含指定字符串 pattern “指定字符串”3.5.1 pattern语法{ 字段名{pattern: 正则表达式} }3.5.2 pattern示例需求1、已知JSON数据2、校验message字段的值必须包含‘操作成功’3、校验手机号必须是11为数字# 导包importjsonschema# 测试数据data{message:操作成功!,mobile:11800000002}# 校验规则schema{type:object,properties:{message:{pattern:^操作成功},mobile:{pattern:^[0-9]{11}$}}}# 调用方法resjsonschema.validate(instancedata,schemaschema)# 查看结果print(res)四、JSON Schema综合案例 综合案例 importjsonschema data{success:False,code:10000,message:xxx登录成功,data:{age:20,name:lily}}schema{type:object,properties:{success:{type:boolean},code:{type:integer},message:{pattern:登录成功$},data:{type:object,properties:{name:{const:lily},age:{const:20}},required:[name,age]}},required:[success,code,message,data]}# 调用方法resjsonschema.validate(instancedata,schemaschema)# 查看结果print(res)