TypeError: das JSON-Objekt sein muss, str, nicht die 'Antwort' mit Python 3.4
Ich bin immer diese Fehlermeldung und ich kann nicht herausfinden, was das problem ist:
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'
Das ist mein code:
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()
Du musst angemeldet sein, um einen Kommentar abzugeben.
Keine Notwendigkeit zum laden des JSON manuell; die Reaktion hat eine
json
Methode.TypeError: list indices must be integers, not str
RelatedTopics
ist eine Liste, kein dict.Du tust
json.loads(r)
undr
ist nicht einstr
sojson.loads()
weiß nicht, was mit ihm zu tun.Im Allgemeinen Fall, müssen Sie eine Zeichenfolge übergeben, die enthält gültige JSON zu
json.loads()
; oft aber, wenn das, was Sie bereits haben, ist ein Python-Objekt von einer Art ist, wird es in der Regel enthält die Attribute (oder Methoden zum extrahieren von Attributen aus seiner internen Repräsentation), die Sie bewältigen können-von der Python, und damit Umwandlung in JSON so können Sie wandeln es in ein Python-Objekt nicht sinnvoll ist.