如何在Pydantic验证失败时获取原始JSON数据?
解决Pydantic验证失败时获取原始数据的方法
Pydantic的ValidationError本身不会自动保留原始输入数据,想要不管验证成功与否都拿到原始数据,最直接靠谱的办法是提前把输入数据单独存好,具体实现如下:
from pydantic import BaseModel, Field, ValidationError class Model(BaseModel): a: float = Field(ge=1.0) # 先将原始输入数据单独存储 raw_input = {"a": 0.5} try: # 使用预存的原始数据初始化模型 m = Model(**raw_input) # 验证成功时输出序列化后的模型数据 print(m.model_dump_json()) except ValidationError as e: # 验证失败时,基于原始数据添加错误信息 result = raw_input.copy() result["errors"] = e.model_dump_json() print(result)
如果使用Pydantic v2,你也能通过ValidationError的私有属性_input_data获取原始数据,但不推荐这么做——私有属性可能在后续版本中被修改,稳定性远不如提前保存原始数据的方案。
内容的提问来源于stack exchange,提问作者Oliver
相关产品推荐
相关产品推荐

