如何将嵌套列表格式的服务器响应序列化为Pydantic模型
如何将JSON中的数组子项映射到Pydantic的Item模型
要把服务器返回的JSON中data字段的子列表(如[1, "red"])映射到你的Item模型,你可以给Item类添加模型验证器,在解析前将列表转换为模型所需的键值对格式。
实现代码
from datetime import datetime from pydantic import BaseModel, model_validator class Item(BaseModel): id: int color: str @model_validator(mode='before') def parse_list_to_item(cls, values): # 若输入是长度为2的列表,按顺序映射到id和color字段 if isinstance(values, list) and len(values) == 2: return {"id": values[0], "color": values[1]} return values class Model(BaseModel): date: datetime status: bool data: list[Item] # 测试解析逻辑 response_data = { "date": "2024-02-05 15:34:44", "status": True, "data": [ [1, "red"], [2, "blue"], [3, "yellow"] ] } # 实例化模型 parsed_model = Model(**response_data) print(parsed_model.data) # 输出结果: [Item(id=1, color='red'), Item(id=2, color='blue'), Item(id=3, color='yellow')]
关键说明
@model_validator(mode='before'):这个装饰器指定验证逻辑在Pydantic的字段验证之前执行,确保列表格式的输入先被转换为模型能识别的字典格式。- 验证逻辑会检查输入是否为长度为2的列表,若是则将列表元素按顺序映射到
id和color字段,否则直接返回原输入(兼容正常的字典格式输入)。
内容的提问来源于stack exchange,提问作者Oliver
相关产品推荐
相关产品推荐

