繁体   English   中英

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

[英]How validate few fields with Pydantic in huge nested json?

我有类似 dict 的对象,例如:

    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)

这里有什么解决办法吗?

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

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM