0

我正在向 Google+ API 发出 GET 请求。我相信 JSON 会被返回(尽管我对此不清楚,请参阅此处的“响应正文具有以下结构” )。我使用 json.loads 将响应转换为 python 字典。

 import requests 

 payload = {'query':'celery', 'key':'api_key'}
 r = requests.get("https://www.googleapis.com/plus/v1/activities?", params=payload) 

 my_dict = json.loads(r.text)

所有这一切都很好,除了似乎部分响应仍然编码在 ecma 脚本中(再次不确定),如下所示:

 \u06a9\u0634\u0648\u0631\u0646\u062f. \u0627\u0632 \u0633\u0627\u0644\u0647\u0627 

我的问题是如何解码这些字符串?是从 Google 返回的 JSON 吗?

感谢期待,

4

2 回答 2

0

您示例中的字符串是 UTF16

像这样将它加载到 python shell 中:

s = u"\u06a9\u0634\u0648\u0631\u0646\u062f. \u0627\u0632 \u0633\u0627\u0644\u0647\u0627"
print s
کشورند. از سالها

要在网页中看到它,网络服务器必须在 Content-Encoding 标头中发送正确的编码。

于 2013-07-23T16:52:28.163 回答
0

我发现简单地使用对象的json属性response比使用容易得多json.loads()

r = requests.get("https://www.googleapis.com/plus/v1/activities?", params=payload)
my_dict = r.json

或者

my_dict = requests.get("https://www.googleapis.com/plus/v1/activities?", params=payload).json

以获得更简洁的版本。

请注意,出于某种原因,python-requests.org 上的文档错误地将其显示为.json(),即方法而不是属性。不知道为什么,但不要为此感到困惑。

于 2013-07-23T16:54:22.927 回答