2011年9月9日 星期五

[jython]json到哪兒去了?(2)

經過了一段掙扎,回頭再看一下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 的字串。

呼,終於搞定了。

沒有留言:

張貼留言