J'utilise PyDantic pour modéliser les demandes et les réponses à une API.
J'ai défini un User
classe:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
Mon API renvoie une liste d'utilisateurs que je récupère avec requests
et convertissez en dict:
users = [{"name": "user1", "age": 15}, {"name": "user2", "age": 28}]
Comment puis-je convertir ce dict en une liste des instances User
?
Ma solution pour l'instant est
user_list = []
for user in users:
user_list.append(User(**user))
Vous pouvez envisager d'utiliser une compréhension de la liste avec des dict de déballage au constructeur User
user_list = [
User(**user) for user in users
]
Vous pouvez utiliser le __root__
Mot-clé Pydantic:
from typing import List
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
class UserList(BaseModel):
__root__: List[User] # ⯇-- __root__
Pour construire la réponse 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))
Votre Frame-Web API peut JSONIFY user_list
Pour être retourné comme une matrice JSON (dans le corps de réponse).