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

如何将JSON列表反序列化为LeagueAcc类对象并填充至accounts列表?

解决JSON反序列化为LeagueAcc对象数组的问题

首先确保你的LeagueAcc类定义正确,构造函数参数和默认值要对应:

class LeagueAcc:
    def __init__(self, loginname, pw, summoner, tagline, elo=None, id=None, puuid=None):
        self.loginname = loginname
        self.pw = pw
        self.summoner = summoner
        self.tagline = tagline
        self.elo = elo
        self.id = id
        self.puuid = puuid

然后给类添加一个类方法from_json,用来把单个JSON对象转换成LeagueAcc实例:

@classmethod
def from_json(cls, json_data):
    # 提取必填字段,可选字段用get方法获取(不存在则返回None,匹配默认值)
    return cls(
        loginname=json_data['loginname'],
        pw=json_data['pw'],
        summoner=json_data['summoner'],
        tagline=json_data['tagline'],
        elo=json_data.get('elo'),
        id=json_data.get('id'),
        puuid=json_data.get('puuid')
    )

最后是加载JSON文件并生成accounts列表的核心逻辑:

import json

# 读取并加载JSON文件内容
with open('dataprint.json', 'r', encoding='utf-8') as f:
    json_content = json.load(f)

# 遍历"LeagueAcc"数组,逐个生成对象并存入accounts列表
accounts = [LeagueAcc.from_json(item) for item in json_content['LeagueAcc']]

注意事项

  • 类方法from_json用@classmethod装饰,能直接通过类调用,不用先创建空实例
  • 用json_data.get()处理可选字段,避免JSON中缺少elo、id或puuid时抛出KeyError
  • 列表推导式简洁高效,直接完成数组到对象列表的转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:17:12