TypeError:JSON对象必须是str,而不是Python 3.4的“Response”

时间:2016-02-09 11:34:31

标签: python json python-3.x raspberry-pi

我收到此错误,我无法弄清楚问题所在:

Traceback (most recent call last):
  File "C:/Python34/Scripts/ddg.py", line 8, in <module>
    data = json.loads(r)
  File "C:\Python34\lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))
TypeError: the JSON object must be str, not 'Response'

这是我的代码:

import requests, json

search_q = input('Enter query: ')

r = requests.get('https://api.duckduckgo.com/?q=%s&format=json&pretty=1' % search_q)

if r.status_code == requests.codes.ok:
    data = json.loads(r)
    node = data['RelatedTopics']['Result']
    print (str(node))
else:
    bad_r.raise_for_status()

2 个答案:

答案 0 :(得分:8)

无需手动加载JSON;响应有一个json方法。

data = r.json()

答案 1 :(得分:0)

您正在json.loads(r)r不是str,因此json.loads()不知道如何处理它。

在一般情况下,您需要将包含有效JSON的字符串传递给json.loads();虽然经常,如果您已经拥有的是某种类型的Python对象,它通常会包含您可以从Python处理的属性(或从其内部表示中提取属性的方法),因此将其转换为JSON以便您可以将其转换为对Python对象没有意义。