【发布时间】:2014-11-22 16:45:00
【问题描述】:
我正在构建一个 GAE Web 应用程序,它通过 HTTP POST 接收 JSON 文件并将数据保存到应用程序的数据存储中。
我能够使用以下代码将传入的 JSON 文件解析为我的 NDB 模型类:
jsonContent = json.loads(self.request.body)
myTransaction = Transaction()
myTransaction.populate(**jsonContent)
myTransaction.put()
这是 JSON 文件的内容:
{"name": "Fabio", "message": "Hello World!"}
我面临的挑战是,此 JSON 还应包含一个 ID 值,该 ID 值将存储在数据存储实体的“键名”列中。我尝试将 "key_name":"1" 或 "id":"1" 添加到 JSON 文件,但 populate() 方法不将它们理解为有效属性。相反,当第一次实例化 myTransaction 对象时,我必须按照惯例将构造函数设置为 Transaction(id="1")。但是,属性 ID 的内容与其余数据一起存储在 JSON 文件中。在调用 populate() 之前以编程方式实际打开 JSON 以检索每个 ID 并设置构造函数是没有任何意义的。事实上,这甚至不起作用,因为 populate() 仍然会尝试解析 JSON 文件中的属性 ID。
有谁知道如何将包含“Key Name”属性的 JSON 文件解析到 NDB 模型类并将其持久化到应用程序的数据存储中?
【问题讨论】:
标签: python json google-app-engine google-cloud-datastore