如何将JSON反序列化回从db.Model创建的对象

问题描述:

我想要做一些像这样的人问,但我想反序列化而不是序列化。 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

您应该能够通过将反序列化的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