json schema 用来描述一个 json 数据的结构,这在验证json数据时非常有用,以下操作是常用的一些验证规则。
校验是否包含 access_token 和 token_type 字段:
{ "type": "object", "required": ["access_token", "token_type"], }
校验字段类型:
{ "type": "object", "required": ["access_token", "token_type"], "properties": { "access_token": {"type": "string"}, "token_type": {"type": "string"} } }
检验字段个数:
{ "type": "object", "minProperties": 2, "maxProperties": 3 }
校验字段是否匹配某个规则(正则)
{ "required": ["msg"], "properties": { "msg": {"pattern": "Incorrecdd account or password"} } }
校验字符串长度
ajson = {"token": "abc", "now": "2017-03-23"} # 字符串长度 schema = { "required": ["token"], "properties": { "token": { "type": "string", "minLength": 3, "maxLength": 3 } } }
校验字符串是否为日期格式
# 日期 ajson = {"token": "abc", "now": "2017-03-23"} schema = { "required": ["now"], "properties": { "now": { "type": "string", "format": "date" } } } result = jsonschema.validate(ajson, schema=schema)
检验字符串是否为邮箱
# 邮箱 ajson = {"email": "wagyu2016@163.com"} schema = { "required": ["email"], "properties": { "email": { "type": "string", "format": "email" } } } result = jsonschema.validate(ajson, schema=schema) print(result)
验证数字范围:
{ "type": "number", "minimum": 0, "exclusiveMaximum": 100 }
用来表述数据类型的有:
- string
- number
- boolean
- array
- object
- null
校验字段长度
{"type": "string", "minLength": 2, "maxLength": 3}
校验 array 元素是否都为number
{ "type": "array", "items": { "type": "number" } }
分别校验 array 中每一个元素:
{ "type": "array", "items": [ { "type": "number" }, { "type": "string" }, { "enum": ["Street", "Avenue", "Boulevard"] }, { "enum": ["NW", "NE", "SW", "SE"] } ] }
校验元素值是否唯一
{ "type": "array", "uniqueItems": true }
在 Python 中使用 jsonschema, 首先导入 jsonschema , 使用 validate 函数验证是否符合规则。
import jsonschema jsonschema.validate(obj, schema=schema)
欢迎来到testingpai.com!
注册 关于