Python之schenma验证
安装:jsonschema
pip3 install jsonschema
schema文件示例:
schema_data = { "type": "object", "properties": { "username": { "title": "dengyajuan", "type": "string" }, "passwd": { "title": "passwd", "type": "string" }, "id": { "title": "id", "type": "integer" }, "grade": { "title": "grade", "type": "number", "maximum": 100 # 最大值100,小于等于100验证通过 } }, "required": ["username", "passwd", "grade"] # 这里面的时必须字段,且是唯一的 }
文件详细说明:
type 常见类型对应Python 中的数据类型:object,array,integer,number,null,boolean,string
当type 取值为object(JSON)时,涉及到如下关键字:
properties、required、minProperties、maxProperties、propertyNames
dependencies、patternProperties、additionalProperties
properties:
用于说明待校验的JSON对象中,可能有哪些一级属性/字段(key),以及当对应属性/字段(key)存在时,其value的限制条件。
例如:"maximum": 100 # 最大值100,小于等于100验证通过
"required": ["username", "passwd", "grade"] # 这里面的时必须字段,且是唯一的
使用代码示例:
from jsonschema import validate import json import traceback from utils.loguru_utils import log def validate_schema(instance, schema): try: validate(instance=instance, schema=schema) log.info(f'验证通过,\ninstance:{instance},\nschema:{schema}') except Exception as error: log.error(traceback.format_exc()) else: log.info('验证通过') if __name__ == '__main__': # type 常见类型对应Python 中的数据类型:object,array,integer,number,null,boolean,string ''' 当type 取值为object(JSON)时,涉及到如下关键字: properties、required、minProperties、maxProperties、propertyNames dependencies、patternProperties、additionalProperties ''' schema_data = { "type": "object", "properties": { "username": { "title": "dengyajuan", "type": "string" }, "passwd": { "title": "passwd", "type": "string" }, "id": { "title": "id", "type": "integer" }, "grade": { "title": "grade", "type": "number", "maximum": 100 # 最大值100,小于等于100验证通过 } }, "required": ["username", "passwd", "grade"] # 这里面的时必须字段,且是唯一的 } json_data = { "username": "dengyajuan", "passwd": "123456", "grade": 90 } validate_schema(instance=json_data, schema=schema_data)
参考文档:https://blog.csdn.net/AI_Green/article/details/120866760