web-dev-qa-db-ja.com

Pydanticでモデルのリストを解析する方法

私はPydanticを使って、要求と回答をAPIにモデル化します。

Userクラスを定義しました。

from pydantic import BaseModel

class User(BaseModel):
  name: str
  age: int
 _

My APIは、requestsで取得し、DICTに変換するユーザーのリストを返します。

users = [{"name": "user1", "age": 15}, {"name": "user2", "age": 28}]
 _

このDICTをUserインスタンスのリストに変換する方法

今のところ私の解決策

user_list = []
for user in users:
  user_list.append(User(**user))
 _
11
Nymous

UserコンストラクタへのDICTの開梱とともにリストの理解を使用することを検討することができます。

user_list = [
  User(**user) for user in users
]
 _
2
svrist

__root__ pydanticキーワード:

from typing import List
from pydantic import BaseModel

class User(BaseModel):
  name: str
  age: int

class UserList(BaseModel):
  __root__: List[User]     # ⯇-- __root__

JSON応答を構築するには:

user1 = {"name": "user1", "age": 15}
user2 = {"name": "user2", "age": 28}

user_list = UserList(__root__=[])
user_list.__root__.append(User(**user1))
user_list.__root__.append(User(**user2))

API Web Frameworkは、user_listをJSONアレイとして(レスポンスボディ内で)返されることができます。

1
oHo