如何将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
相关产品推荐
相关产品推荐

