You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套列表格式的服务器响应序列化为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 16:54:51