我有一个嵌套的json,我用PYDANIC进行了验证:
app_dict={'apps': [{'app_id': 'a_1',
'group_id': '123',
'report_id': '456',
'principal_id': 'p_1'},
{'app_id': 'a_2',
'group_id': '789',
'report_id': '987'}]}}
class PbiApps(BaseModel):
app_id: ty.Required[pty.StrictStr]
group_id: ty.Required[pty.StrictStr]
report_id: ty.Required[pty.StrictStr]
principal_id: ty.Optional[pty.StrictStr]
class PbiMain(BaseModel):
apps: ty.Optional[ty.List[PbiApps]]
但如果我试图将其解析为PbiMain
,它会抛出a_2
的ValidationError
PbiRoot(**app_dict)
ValidationError: 1 validation error for Settings
apps.1.principal_id
Field required [type=missing, input_value={'app_id': 'a_2', '...test', 'report_id': '789'}, input_type=DictConfig]
For further information visit https://errors.pydantic.dev/2.5/v/missing
我可以设置principal_id: ty.Optional[pty.StrictStr] = None
以使其工作,但我宁可让该文件不存在,也不希望类型为None.
有没有办法实现这一点?