分层类和JSON编码

时间:2013-10-02 14:57:17

标签: python json class

我有一些数据需要写入JSON字符串。 我有它使用dict项目,但希望在课程中包含所有内容以帮助确保正确的数据。

以下代码是dict项和类项输出之间的比较。他们不匹配,我无法弄清楚我错过了什么。

我在我的JSON字符串中得到了一个“绑定方法Event.encode of Event ...”。

from collections import namedtuple
import json


class Event(namedtuple('Event', 'itemName, itemID')):

    def encode(self):
        obj = {}
        obj['itemName'] = str(self.itemName)
        obj['itemID'] = int(self.itemID)

        return json.dumps(obj)

curEv = Event('MyName', 5)
print 'ClassEv : ', curEv.encode()
curEv2 = {'itemName':'MyName', 'itemID':5}
print 'DictEv  : ', json.dumps(curEv2)


class Packet(namedtuple('Packet', 'pID, itemType, itemData')):

    def encode(self):
        obj = {}
        obj['pID'] = int(self.pID)
        obj['itemType'] = int(self.itemType)
        obj['itemData'] = str(self.itemData.encode)

        return json.dumps(obj)

packet = Packet(11, 0, curEv)
print 'ClassPacket: ', packet.encode()

packet2 = {'pID':11, 'itemType':0}
packet2['itemData'] = curEv2
print 'DictPacket : ', json.dumps(packet2)

1 个答案:

答案 0 :(得分:0)

您未能调用itemData.encode()功能。相反,您只是返回对它的引用。

尝试:

    obj['itemData'] = str(self.itemData.encode())

请注意最后的额外()