首页 > 解决方案 > 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

谢谢你

标签: jsonpython-3.7

解决方案


我认为您可能打算(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)

推荐阅读