2011-01-17 39 views
1

對於含有這兩種鍵 - 值對的字典:如何使用simplejson序列化和維護屬性?

str = StringProperty 
time = DateTimeProperty 

我想它序列化到JSON,將其存儲在數據存儲區,然後取它,它反序列化到原始屬性。

+0

你有什麼問題? –

+0

嗯,我真的不明白simplejson文檔。我需要將字典轉換爲json字符串(用於存儲),然後我需要將json字符串轉換回字典(以便獲取和使用)。 –

+0

StringProperty,DateTimeProperty等是專門用於App Engine模型的屬性類。你想達到什麼目的?爲什麼選擇JSON? –

回答

2

嘗試做這樣:

d = { 
    'str' : StringProperty, 
    'time' : unicode(DateTimeProperty) 
} 
s = simplejson.dumps(d) 
print s 
+0

嗯,所以.dumps和.loads不需要文檔中指出的數據類型,或者我誤解了Python如何處理dicts/strings/json。 –

+1

我不明白其中的原因,但是如果你嘗試使用simplejson.dumps({'a':87}),它會很好用。但是如果你運行simplejson.dumps({'a':datetime.datetime.now()}),它會失敗,所以你需要編寫simplejson.dumps({'a':unicode(datetime.datetime.now()) })。這對我來說真是一個謎。 – ikostia

0

這很簡單,如果你的價值觀是字符串:

>>> import simplejson 
>>> print simplejson.dumps({'str': 'StringProperty', 'time': 'DateTimeProperty'}) 
{"str": "StringProperty", "time": "DateTimeProperty"} 

但是,如果值是從自定義類對象(如谷歌應用程序引擎屬性類),它們不是JSON可序列化的。

JSON只序列簡單數據類型,如整數/浮點數,布爾值字符串,列表/元組和字典。 (有關更多詳細信息,請參見http://www.json.org/)。

爲了獲得JSON可序列化值,您需要定義一種方法將它們轉換爲簡單數據類型。例如,將對象轉換爲包含類名和重建它們所需參數的元組。