11

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

1 Answer 1

6

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())
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.