經過了一段掙扎,回頭再看一下jyson的文件。
http://opensource.xhaus.com/projects/jyson/wiki/JysonUserObjects
這裡面提到,要輸出自己的 class 就要實作 __json__() 這個 method。
回頭再測試一下,jyson 的 loads 及 dumps 根本不看 object_hook 及 cls 的參數。
那麼,
a = json.loads(b,object_hook=ext.as_orderdict)
這個 a 只是一個 dict,所以,要自己再產生物件,於是乎從檔案讀回來就要改成
f = open(json_filename,'r')
b = f.read()
f.close()
a = json.loads(b,object_hook=ext.as_orderdict)
if sys.version.find('Java')>-1:
c = ext.OrderDict()
c.list = a['list']
c.dict = a['dict']
a = c
return a
還有,物件 的定義裡要加上 __json__(self) 的方法。
def __json__(self): # for jyson
return u"""{'list':%s,'dict':%s}""" % (json.dumps(self.list),json.dumps(self.dict))
文件中,說明一定要回傳 unicode 的字串。
呼,終於搞定了。
沒有留言:
張貼留言