【问题标题】:How to Deserialize JSON back to objects created from db.Model如何将 JSON 反序列化回从 db.Model 创建的对象
【发布时间】:2010-09-15 04:05:14
【问题描述】:

我想做类似这个人问的事情,但我想反序列化而不是序列化。 How to serialize db.Model objects to json?

有这个库吗?我正在运行 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。

【问题讨论】:

  • 你见过json.load()吗?
  • 忘记了上面的 URL,但那家伙说“所以它使用(用 Python 术语)字符串、数字、列表和字典(四种非常基本的数据类型)——并且不会反序列化为我想要的对象。 stackoverflow.com/questions/3706208/…
  • 是的,熟悉 json.load() 但还没有看到任何关于如何序列化/反序列化现有类的好/实用示例。

标签: json google-app-engine serialization


【解决方案1】:

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

这是假设您通过 JSON 返回的 dict 中的键与字段名称完全匹配,我想如果 JSON 最初是从模型自动生成的,他们应该这样做。

【讨论】:

  • 谢谢,但由于这个问题是一年多以前的问题,我要么当时就解决了这个问题,要么转向了其他事情......
  • 当然,但是这个问题一直没有答案...... :) 希望这对搜索类似问题的人有用。同样的想法也适用于 Django 模型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多