TypeError:JSON对象必须是str,而不是';答复';使用Python3.4
我遇到了这个错误,我无法找出问题所在:TypeError:JSON对象必须是str,而不是';答复';使用Python3.4,python,json,python-3.x,raspberry-pi,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 JSO
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()
无需手动加载JSON;响应有一个
json
方法
data = r.json()
您正在执行
json.loads(r)
并且r
不是str
所以json.loads()
不知道如何处理它
在一般情况下,需要将包含有效JSON的字符串传递给
JSON.loads()
;虽然通常情况下,如果您已经拥有某种类型的Python对象,那么它通常会包含可以从Python处理的属性(或从其内部表示中提取属性的方法),因此,将其转换为JSON以便将其转换为Python对象是没有意义的。谢谢,但我得到:TypeError:list索引必须是整数,而不是str
,那么您错误地使用了数据;可能RelatedTopics
是一个列表,而不是一个dict。如果我想检查返回的数据是否为json,你就是救世主