Python读取JSON文件实例化类时报**解包需mapping而非list错误
错误原因
object_config[str(request.object)]["singles"]是列表类型:对应你JSON结构里的singles字段是包含2个字典元素的数组,JSON解析后对应Python的list对象**解包操作符仅支持作用于字典(映射类型),作用是将字典的键值对拆解为关键字参数传入类构造方法/函数,传入列表会直接触发类型不匹配错误- 你的
MyClass一次只能实例化单个对象,对应singles列表里的单个字典元素,无法直接接收整个列表作为构造参数
解决方法
根据需求选择对应实现:
场景1:批量实例化singles下的所有元素,得到MyClass对象列表
将原代码替换为列表推导式遍历列表逐个实例化:
object_details_list = [MyClass(**item) for item in object_config[str(request.object)]["singles"]]
运行后object_details_list值为 [<MyClass(name=Hello)>, <MyClass(name=World)>]
场景2:仅实例化singles下的某一个元素
需要指定对应下标取列表内的单个字典元素再解包,例如取第一个元素:
object_details = MyClass(**object_config[str(request.object)]["singles"][0])
运行后object_details为对应name=Hello的MyClass实例。
内容的提问来源于stack exchange,提问作者cdub
相关产品推荐
相关产品推荐

