2010-09-15 70 views
2

我想要做一些像這樣的人問,但我想反序列化而不是序列化。 How to serialize db.Model objects to json?如何將JSON反序列化回從db.Model創建的對象

有沒有這方面的圖書館?我正在運行Google App Engine,並從appengine-rest-server(http://code.google.com/p/appengine-rest-server /)獲取JSON字符串。

我在這裏用不同的方式提出了這個問題(How to inspect mystery deserialized object in Python),所以我希望通過給出上面這個人的帖子的類比,我會更清楚我想要做什麼。如果JSON不起作用,我可以使用XML代替。

+0

你見過[''json.load()'](http://docs.python.org/library/json.html#json.load)嗎? – NullUserException 2010-09-15 04:08:24

+0

忘記了上面的URL,但這個人說「所以它使用(用Python術語來說)字符串,數字,列表和字典(四種非常基本的數據類型) - 並且不會反序列化到我想要的對象。/questions/3706208/how-to-inspect-mystery-deserialized-object-in-python – NealWalters 2010-09-15 04:16:53

+0

是的,熟悉json.load(),但沒有看到如何序列化/從已有的 – NealWalters 2010-09-24 20:46:03

回答

2

您應該能夠通過將反序列化的JSON作爲kwargs傳遞給構造函數來實例化所需模型的實例。在google.appengine.ext.db (__init__.py) > Model.__init__ method

如看看SDK源,你可以這樣做:

from myapp.models import MyModel 

results = '{"firstname": "Neal", "lastname": "Walters"}' 
data = json.loads(results) 

instance = MyModel(**data) 

這是假設的按鍵INF你通過JSON比賽回來正好字段名稱的字典,我想他們應該做的如果JSON是最初從模型自動生成的。

+0

謝謝,但是因爲這個問題已經過去了一年多了,所以我要麼回過頭來看看,要麼轉到別的什麼地方去...... – NealWalters 2012-02-09 14:09:26

+0

當然,但問題依然沒有答案... :)希望這對於人們用Google搜索類似的問題,Django模型也可能有同樣的想法。 – Anentropic 2012-02-09 15:16:45