pydantic.error_wrappers.ValidationError:B 的 1 个验证错误

Aza*_*zat 9 python json pydantic

当我尝试使用 Pydantic 解析 JSON 对象时,我的 IDE 返回错误...

\n

代码:

\n
from pydantic import BaseModel, Field\n\nclass A(BaseModel):\n    a: str = Field(None, alias="\xd0\x90")\n\nclass B(BaseModel):\n    b: dict[str, A] = Field(None, alias="\xd0\x91")\n\nj = {\n    "\xd0\x91": {\n        "\xd0\x90": "\xd0\x97\xd0\xbd\xd0\xb0\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5"\n    }\n}\n\nobj=B.parse_obj(j)\n
Run Code Online (Sandbox Code Playgroud)\n

...和错误文本:

\n
File "pydantic/main.py", line 572, in pydantic.main.BaseModel.parse_obj\n  File "pydantic/main.py", line 400, in pydantic.main.BaseModel.__init__\npydantic.error_wrappers.ValidationError: 1 validation error for B\n\xd0\x91 -> \xd0\x90\n  value is not a valid dict (type=type_error.dict)\n
Run Code Online (Sandbox Code Playgroud)\n

请回答为什么会发生这种情况

\n

Aza*_*zat 5

哦,太简单了......不用使用类型,只需使用已经与子对象匹配的dictmodel 。A

\n
from pydantic import BaseModel, Field\n\n\nclass A(BaseModel):\n    a: str = Field(None, alias="\xd0\x90")\n\n\nclass B(BaseModel):\n    b: A = Field(None, alias="\xd0\x91")\n\n\nj = {\n    "\xd0\x91": {\n        "\xd0\x90": "\xd0\x97\xd0\xbd\xd0\xb0\xd1\x87\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5"\n    }\n}\n\nobj = B.parse_obj(j)\nprint(obj.json())\n
Run Code Online (Sandbox Code Playgroud)\n