json - AttributeError:“元组”对象没有属性“转储”
问题描述
我是 python 新手,我尝试序列化自定义对象列表。这是我尝试序列化的对象:
test = [(deliveryRecipientObject){
deliveryType = "selected"
id = "gkfhgjhfjhgjghkj"
type = "list"
}]
在我阅读了一些帖子和教程后,我想出了这个:
class deliverRecipientObject(object):
def __init__(self):
self.deliveryType = ""
self.id = ""
self.type = ""
class MyJsonEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, deliverRecipientObject):
return {}
return (MyJsonEncoder, self).dumps(obj)
然后我运行:
json.dumps(test, cls=MyJsonEncoder)
然后我得到了这个错误: AttributeError: 'tuple' object has no attribute 'dumps'
我的目标是将其读取为 json,然后我可以将其展平并将其保存为 csv
谢谢你
解决方案
我认为您可能打算(MyJsonEncoder, self).dumps
成为super(MyJsonEncoder, self).dumps
,尽管那也是错误的。相反,您应该调用super().default
(在 python 3 中,您不需要传递参数)
class MyJsonEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, deliverRecipientObject):
return {
"deliveryType": obj.deliveryType,
"id": obj.id,
"type": obj.type,
}
return super().default(obj)
推荐阅读
- unit-testing - 来自 api 的列表显示应用程序中的单元测试应该涵盖哪些内容?
- postgresql - 使用 docker-compose 时如何创建和填充 wso2 数据库表?
- batch-file - 我试图创建一个字符计数器,但我最终得到了这个
- css - 为什么我在网格行中有额外的空间?
- c - 为什么 strcmp 不能与 Process32NextW 一起使用?
- python - 在 mapreduce 上运行作业会产生错误代码 1
- vb.net - vb.net 中从 Form1.Chart1 到 Report.rdlc
- javascript - 如何在array_column php中输入确认框
- python - MAC OS - os.system(command) 什么都不显示
- firebase - Cloud Firestore 中的 Flutter Query 3rd Level Collection