2013-10-02 43 views
0

我有一些數據需要寫入JSON字符串。 我使用字典項目,但希望將它包含在所有類中以幫助確保正確的數據。分層類和JSON編碼

以下代碼是字典項目和類項目輸出之間的比較。他們不匹配,我無法弄清楚我缺少的東西。

我在我的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) 

回答

0

您未能調用itemData.encode()函數。相反,你只是簡單地返回一個參考。

嘗試:

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

注意額外()末。