如何做电子书网站,社交媒体市场营销,三明市建设局网站,canvas做的手机网站目录
1.介绍
2.安装
3.使用
3.1type关键字
3.2最大值最小值
3.2.1minimum 、 maximum
3.2.2 exclusiveMinimum 、exclusiveMaximum
3.3字符串特殊校验
3.4数据约束
3.5对象约束
3.6必须属性
3.7依赖关系
4.总结 1.介绍
JSON Schema 是一个用来定义和校验 JSON 的…目录
1.介绍
2.安装
3.使用
3.1type关键字
3.2最大值最小值
3.2.1minimum 、 maximum
3.2.2 exclusiveMinimum 、exclusiveMaximum
3.3字符串特殊校验
3.4数据约束
3.5对象约束
3.6必须属性
3.7依赖关系
4.总结 1.介绍
JSON Schema 是一个用来定义和校验 JSON 的 web 规范简而言之JSON Schema 是用来校验 json 是否符合预期。
根据 json 创建 JSON Schema 后你可以使用你选择的语言中的验证器将示例数据与你的模式进行验证。
在线JSON转Schema工具 - ToolTT在线工具箱
2.安装
pip install jsonschema4.23.0
3.使用
3.1type关键字
type 关键字指定了数据类型可用于验证 JSON 数据中每个属性的数据类型是否符合预期。常用的数据类型如下
type解释string字符串类型用于文本数据。number数字类型用于表示浮点数。integer整数类型用于表示整数。boolean布尔类型值为 true 或 false。object对象类型用于嵌套的 JSON 对象。array数组类型用于列表或集合。null空值类型。 properties 是一个验证关键字。当你定义 properties 时你创建了一个对象其中每个属性代表正在验证的 JSON 数据中的一个键。 from jsonschema import validatedef test2():字典结构键值对形式json{name: zhangsan,height: 175.55}用于校验json_data的结构jsonschema {type: object,properties: {name: {type: string},height: {type: integer}}}validate(json,jsonschema) 3.2最大值最小值
minimum 和 maximum指定数值的最小值和最大值。 min x max exclusiveMinimum 和 exclusiveMaximum指定数值必须严格大于或小于某个值不包含等于。 min x max 3.2.1minimum 、 maximum
from jsonschema import validatedef test2():json{name: zhangsan,age: 20}jsonschema {type: object,properties: {name: {type: string},age: {type: integer,minimum: 18,maximum: 120}}}validate(instancejson,schemajsonschema) 未成年报错 3.2.2 exclusiveMinimum 、exclusiveMaximum
from jsonschema import validatedef test2():json{name: zhangsan,age: 18}jsonschema {type: object,properties: {name: {type: string},age: {type: integer,exclusiveMinimum: 18,exclusiveMaximum: 20}}}validate(instancejson,schemajsonschema) 3.3字符串特殊校验 pattern 使用正则表达式来验证字符串是否符合特定的模式。 正则表达式 – 语法 | 菜鸟教程 from jsonschema import validatedef test2():json{name: zhangsan,age: 19}jsonschema {type: object,properties: {name: {type: string,pattern: r\S{4,20}},age: {type: integer,exclusiveMinimum: 18,exclusiveMaximum: 20}}}validate(instancejson,schemajsonschema) 3.4数据约束
关键字作用描述minItems指定数组最小长度maxItems指定数组最大长度uniqueItems确保数组元素唯一items定义数组元素的类型与约束 from jsonschema import validatedef test3():json {data: [1,2,3,4,5,5],string: pytest}jsonschema {type: object,required: [],properties: {data: {type: array,#对数组添加最小长度和最大长度minItems: 1,maxItems: 6,uniqueItems: True,items: {type: number}},string: {type: string}}}validate(instancejson, schemajsonschema)3.5对象约束
关键字作用说明minProperties指定对象的最小属性数量即对象至少要有多少个属性maxProperties指定对象的最大属性数量即对象最多能有多少个属性additionalProperties控制对象是否允许存在未在 properties 中定义的额外属性默认值为 True JSON Schema 默认不会对对象其他属性进行校验 from jsonschema import validatedef test_01():# JSON数据字典结构键值对形式json_data {code: SUCCESS,errMsg: ,data: False,#其他键title: 测试}# JSON Schema用于校验json_data的结构json_schema {type: object,required: [], # 可指定必须包含的字段如 [code, errMsg]properties: {code: {type: string},errMsg: {type: string},data: {type: boolean}}}validate(json_data, json_schema) additionalProperties 控制对象是否允许存在未在 properties 中定义的额外属性默认值为 True from jsonschema import validatedef test_01():# JSON数据字典结构键值对形式json_data {code: SUCCESS,errMsg: ,data: False,#其他键title: 测试}# JSON Schema用于校验json_data的结构json_schema {type: object,#不允许有额外的字段additionalProperties: False,required: [], # 可指定必须包含的字段如 [code, errMsg]properties: {code: {type: string},errMsg: {type: string},data: {type: boolean}}}validate(json_data, json_schema) 参数太多时我们可以使用对应的网站
在线JSON转Schema工具 - ToolTT在线工具箱
但是要注意二次检查可能会出现错误。
嵌套的json对象 def testblog_list():urlhttp://8.137.19.140:9090/blog/getListhread {user_token_header:eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlck5hbWUiOiJ6aGFuZ3NhbiIsImV4cCI6MTc1NDczNTA5M30.cva2orifFbPsqSUlY9HJedF2hvIaRbXkMKqMOJTMx7o}response requests.get(urlurl, headershread)print(response.json())json_schema{type: object,required: [],#additionalProperties 在哪里就限制哪一层级additionalProperties: False,properties: {code: {type: string},errMsg: {type: string},data: {type: array,items: {type: object,required: [],#additionalProperties 在哪里就限制哪一层级additionalProperties: False,properties: {id: {type: number},title: {type: string},content: {type: string},userId: {type: number},deleteFlag: {type: string},createTime: {type: string},updateTime: {type: string},loginUser: {type: boolean}}}}}}validate(json_schema, response.json()) minProperties、maxProperties from jsonschema import validatedef test_01():# JSON数据字典结构键值对形式json_data {code: SUCCESS,errMsg: ,data: False,}# JSON Schema用于校验json_data的结构json_schema {type: object,#最少一个属性最多两个属性minProperties: 1,maxProperties: 2,#不允许有额外的字段additionalProperties: False,required: [], # 可指定必须包含的字段如 [code, errMsg]properties: {code: {type: string},errMsg: {type: string},data: {type: boolean}}}validate(json_data, json_schema)将属性个数设置为3 3.6必须属性
通过 required 关键字JSON Schema 可以指定哪些属性是必需的。如果 JSON 实例中缺少这些必需属性验证将失败(防止某些属性没有数据导致失败)。
例
from jsonschema import validatedef test_01():# JSON数据字典结构键值对形式json_data {}# JSON Schema用于校验json_data的结构json_schema {type: object,required: [], # 可指定必须包含的字段如 [code, errMsg]properties: {code: {type: string},errMsg: {type: string},data: {type: boolean}}}validate(json_data, json_schema) required 缺少 data 属性校验 from jsonschema import validatedef test_01():# JSON数据字典结构键值对形式json_data {code: SUCCESS,errMsg: ,}# JSON Schema用于校验json_data的结构json_schema {type: object,required: [code,errMsg,data], # 可指定必须包含的字段如 [code, errMsg]properties: {code: {type: string},errMsg: {type: string},data: {type: boolean}}}validate(json_data, json_schema)3.7依赖关系
dependentRequired 可以定义属性之间的依赖关系。 当 JSON 实例里有 creditCard 属性时必须同时包含 billingAddress 属性不然验证不通过要是没有 creditCard 属性billingAddress 存在或不存在都可以 。 代码格式
{type: object,properties: {creditCard: {type: string},billingAddress: {type: string}},dependentRequired: {creditCard: [billingAddress]}
}
示例
缺少密码
def test04():json {username: zhangsan,# password: 123456,age: 18,height: 175.8}jsonschema {type: object,required: [],properties: {username: {type: string},password: {type: string},age: {type: number},height: {type: number}},dependentRequired: {username: [password]}}validate(instancejson, schemajsonschema) 缺少账号: 两者都没有 4.总结