如何在 Google App Engine 中解析 JSON?

Posted

技术标签:

【中文标题】如何在 Google App Engine 中解析 JSON?【英文标题】:How can I parse JSON in Google App Engine? 【发布时间】:2010-11-13 09:11:26 【问题描述】:

我想将 JSON 字符串解析为 Google App Engine (python) 下的对象。你有什么建议吗?编码/字符串化的东西也会很好。你推荐的是内置的,还是我必须在我的应用程序中包含的库?它安全吗?谢谢。

【问题讨论】:

如果你的堆栈上有 Python 是什么版本? 我使用的是应用引擎版本 1,应该是 python 2.5。 【参考方案1】:

考虑使用 Django's json lib,它包含在 GAE 中。

from django.utils import simplejson as json

# load the object from a string
obj = json.loads( string )

上面的链接有 Django 的序列化器的例子,这里是 simplejson's documentation 的链接。

如果您正在考虑存储 Python 类实例或对象(而不是列表、字符串、数字和字典的组合),您可能需要查看 pickle。

希望对你有帮助。

顺便说一句,要让 Django 1.0(而不是 Django 0.96)在 GAE 上运行,您可以在 main.py 中使用以下调用,每 this article:

from google.appengine.dist import use_library
use_library('django', '1.0')

编辑:Google App Engine 1.6.0 和 Python 2.7 中的原生 JSON 支持

从 Google App Engine 1.6.0 开始,您可以通过在 app.yaml 中添加 runtime: python27 来 use the Python 2.7 runtime,然后您可以使用 import json 导入原生 JSON 库。

【讨论】:

很好的答案,对我帮助很大。这里只是一个评论:当我使用导入 json 功能时,我在部署我的应用程序时收到 500 服务器错误。但是当我使用 from django.utils import simplejson as json 时,它可以完美运行。【参考方案2】:

Google App Engine 现在支持 python 2.7。如果使用 python 2.7,您可以执行以下操作:

import json
structured_dictionary = json.loads(string_received)

【讨论】:

【参考方案3】:

在您的应用中包含simplejson 库?

【讨论】:

【参考方案4】:

这是一个老问题,但我想我会给出一个更新的、更详细的答案。对于现在登陆这里的用户,您几乎可以肯定使用的是 python 2.6 或更高版本,因此您可以使用内置的 json 模块 for Python 2(或 for Python 3,因为 Google 最近在 GAE 上添加了对 Python 3 的支持)。导入就像import json 一样简单。下面是一些如何使用 json 模块的示例:

import json

# parse json_string into a dict
json_string = '"key_one": "value_one", "key_two": 1234'
json_dict = json.loads(json_string)
# json_dict: u'key_two': 1234, u'key_one': u'value_one'

# generate json from a dict
json_dict = 'key': 'value', 'key_two': 1234, 'key_three': True
json_string = json.dumps(json_dict)
# json_string: '"key_two": 1234, "key": "value", "key_three": true'

如果您使用的是旧版本的 python,请坚持@Brian M. Hunt 的回答。

同样,这里是 Python 2 的 json 模块的文档页面,这里是 Python 3。

【讨论】:

【参考方案5】:

如果您使用的是 Python2.6 或更高版本,我已经成功使用了内置的 json.load 函数。否则,simplejson 在 2.4 上工作,没有依赖关系。

【讨论】:

【参考方案6】:

查看json.org的python部分。 JSON 的标准库支持始于 python 2.6,我相信它比应用程序引擎提供的更新。也许是列出的其他选项之一?

【讨论】:

这与 App Engine 无关。

以上是关于如何在 Google App Engine 中解析 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

Google App Engine“解析./app.yaml时出错:未知的url处理程序类型”

文件不想被解析(app.yaml Google Cloud Platform - App Engine context)

动态标记和 infoWindow Google Maps API 使用 Google App Engine 通过 JSON 文件解析

Google App Engine Node.js 应用程序 - “解析 app.yaml 时出错:未知 url 处理程序类型”

如何在 Google App Engine app.yaml 中处理尾部斜线

Google App Engine 在基本缩放上抛出错误