0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pydantic V2 ネストNull None問題解決

0
Posted at

過去記事でも、困っていたPydantic V2問題ですが、生成AIコーディングにより、ようやく突破できました。

  • 事象
    • pydantic version.2にて、入れ子(ネスト)のクラス定義をした場合、オプション項目の省略(Noneセットではなく、リクエストボディから省略)ができず、エラーになる
  • 原因
    • pydantic v2でnull定義が厳格化されてしまったこと
    • ネストクラス定義名と項目名を同じにしてしまうと、pydanticが誤認してしまうこと
  • 解決方法
    • Union構文 = Noneと、クラス名と変数名を同じにしないことで解決できました
実際のコード.py
class ResponseName(BaseModel):
    type: str
    number: str
    name: str


class NameInquiryRes(BaseModel):
    responseName: Union[ResponseName, None] = None
    traceId: str | None = None
    processingDate: str | None = None
    errorCode: str | None = None
    errorMessage: str | None = None

過去記事で、一つ目の原因まではせまれたのですが、二つ目が当時はどうしても判明できず未解決のままでした。生成AIにデバッグしてもらい、ようやく解決することができました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?