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

如何将JSON Array转换为对应自定义Task类实例的Python列表

Python实现JSON数组转自定义Task类实例列表

基础实现方案(无第三方依赖)

首先先定义你的Task类,之后遍历JSON对应的Python字典列表,逐个实例化即可:

from datetime import datetime
import json

# 1. 自定义Task类
class Task:
    def __init__(self, completed: int, content: str, deadline: str, id: int, user_id: int):
        self.completed = completed
        self.content = content
        # 可选:将字符串格式的截止时间转换为datetime对象,方便后续时间计算
        self.deadline = datetime.strptime(deadline, "%a, %d %b %Y %H:%M:%S %Z")
        self.id = id
        self.user_id = user_id

    # 可选:自定义打印格式,方便调试查看实例内容
    def __repr__(self):
        return f"Task(id={self.id}, content='{self.content}', completed={self.completed})"

# 2. 加载JSON数据(如果是已经解析好的Python字典列表可以跳过这步)
# 假设你的JSON字符串存在变量json_str中
json_data = json.loads(json_str)

# 3. 批量转换为Task实例列表
task_list = [Task(**item) for item in json_data]

这里的**item是字典解包语法,只要JSON字典的键名和Task类__init__的参数名完全对应,就可以直接用这个语法简化代码。如果键名不匹配,手动逐个映射参数即可,示例:Task(content=item['task_content'], completed=item['is_done'])

简化实现方案(Python 3.7+,用dataclass)

如果不想手动写冗长的__init__方法,可以用Python标准库的dataclasses模块简化类定义:

from dataclasses import dataclass
from datetime import datetime
import json

@dataclass
class Task:
    completed: int
    content: str
    deadline: datetime | str
    id: int
    user_id: int

# 加载JSON数据
json_data = json.loads(json_str)

# 转换逻辑不变,如果需要统一转换时间格式可以提前处理字段
task_list = []
for item in json_data:
    # 转换截止时间为datetime对象,不需要可以删掉这行
    item['deadline'] = datetime.strptime(item['deadline'], "%a, %d %b %Y %H:%M:%S %Z")
    task_list.append(Task(**item))

常见问题处理

  • 如果JSON字典包含多余字段,解包会报错,可以提前过滤需要的键:
# 只保留Task类需要的字段
required_keys = {"completed", "content", "deadline", "id", "user_id"}
task_list = [Task(**{k:v for k,v in item.items() if k in required_keys}) for item in json_data]
  • 如果部分字段可能缺失,可以给Task类的参数设置默认值,避免初始化报错。

内容的提问来源于stack exchange,提问作者Rahul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:45:05