我收到此错误,我无法弄清楚问题所在:
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()
答案 0 :(得分:8)
无需手动加载JSON;响应有一个json
方法。
data = r.json()
答案 1 :(得分:0)
您正在json.loads(r)
而r
不是str
,因此json.loads()
不知道如何处理它。
在一般情况下,您需要将包含有效JSON的字符串传递给json.loads()
;虽然经常,如果您已经拥有的是某种类型的Python对象,它通常会包含您可以从Python处理的属性(或从其内部表示中提取属性的方法),因此将其转换为JSON以便您可以将其转换为对Python对象没有意义。