在項目中遇到有同時用到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)
