jsonschema数据验证模块


在项目中遇到有同时用到jsonschema模块来验证数据结构感觉挺有用的,记录一下

 

如果我想要验证一个普通的字典结构该怎么办?

字典

from jsonschema import validate, ValidationError

#这里的type要写json支持的type
schema = {
    'type': 'object',
    "properties": {
        "price": {"type": "number"},
        "name": {"type": "string"}
    },
    "required": ["price", "name"]  # 要求必须传的参数
}

data = {
    "price": 34.55,
    "name": "egg"
}

try:
    validate(data, schema) #验证通过啥也不返回,不通过就会报错
except ValidationError as e:
    print(e)

数组

简单数组

schema = {

    "maxItems": 2  # 最大只能两个元素
}

data = [1, 2, 3]

try:
    validate(data, schema)
except ValidationError as e:
    print(e)


#结果
[1, 2, 3] is too long

Failed validating 'maxItems' in schema:
    {'maxItems': 2}

On instance:
    [1, 2, 3]

复杂数组,即数组里边含有字典

schema = {
    "type": "array",
    "items": {
        'type': 'object',
        'properties': {
            'id': {'type': 'string'},
            'price': {'type': 'number'},
        },
        "required": ["price"]  # 注意这个要放在字典里边,否则不起作用

    }

}

data = [{'id': "222", 'price': 45}]

try:
    validate(data, schema)
except ValidationError as e:
    print(e)


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM