【发布时间】:2021-03-26 11:21:44
【问题描述】:
我想检查一个 JSON 字符串是否是一个有效的 Pydantic 模式。
from pydantic import BaseModel
class MySchema(BaseModel):
val: int
我可以通过 try/except 非常简单地做到这一点:
import json
valid = '{"val": 1}'
invalid = '{"val": "horse"}'
def check_valid(item):
try:
MySchema(**json.loads(item))
return True
except:
return False
print(check_valid(valid))
print(check_valid(invalid))
输出:
True
False
使用 try/except 来获得真/假似乎是不好的做法。有没有更好的办法?
【问题讨论】:
-
最好是捕获特定的异常。在这种情况下,来自 pydantic 的 ValidationError 和来自 json.loads 的异常
-
顺便说一下pydantic默认有一些类型转换,所以要注意。所以 pydantic 不仅是验证器,还是格式化器
标签: python validation pydantic