9

When I try to parse JSON object with Pydantic, my IDE returns error...

Code:

from pydantic import BaseModel, Field

class A(BaseModel):
    a: str = Field(None, alias="А")

class B(BaseModel):
    b: dict[str, A] = Field(None, alias="Б")

j = {
    "Б": {
        "А": "Значение"
    }
}

obj=B.parse_obj(j)

... and error text:

File "pydantic/main.py", line 572, in pydantic.main.BaseModel.parse_obj
  File "pydantic/main.py", line 400, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for B
Б -> А
  value is not a valid dict (type=type_error.dict)

please answer why this is happening

Azat
  • 139
  • 1
  • 1
  • 5

1 Answers1

4

Oh, it was so simple... instead of using a dict type, just use the model A, which already matches the subobject.

from pydantic import BaseModel, Field


class A(BaseModel):
    a: str = Field(None, alias="А")


class B(BaseModel):
    b: A = Field(None, alias="Б")


j = {
    "Б": {
        "А": "Значение"
    }
}

obj = B.parse_obj(j)
print(obj.json())
Christopher Peisert
  • 21,862
  • 3
  • 86
  • 117
Azat
  • 139
  • 1
  • 1
  • 5