如何在巨大的嵌套json中验证Pydantic的几个字段?



我有一个类似字典的对象,比如:

data = {
# A lot of data here
'json_data_feed':
{'address':
{'name': 'home_sweet_home'}
}
# A lot of data here
}

我想创建Pydantic模型与几个字段。我想这样做:

class OfferById(pydantic.BaseModel):
short_address: str = pydantic.Field(..., alias='name')
@pydantic.validator('short_address', pre=True)
def validate_short_address(cls, value):
return value['json_data_feed']['address']

并且异常失败:

Some = OfferById(**data)
File "pydantic/main.py", line 406, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for OfferById
name
field required (type=value_error.missing)

这里有解决办法吗?

您可以通过根验证器实现这一点。例如:

class OfferById(BaseModel):
short_address: str = Field(..., alias='name')
@root_validator(pre=True)
def validate_short_address(cls, values):
values['name'] = values['json_data_feed']['address']['name']
return values

print(OfferById(**data))

最新更新