TypeError: Das JSON-Objekt muss str sein, nicht 'Response' mit Python 3.4

Ich bekomme diesen Fehler 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() 

  • Unicode und Kodierung für persische oder arabische in python3
  • Py2exe "Requests" Modul fehlt
  • Was bedeutet `super ()` in `__new__`
  • Mit pickle.dumps zu Hash-mutable Objekte
  • Verwenden von Loops in python, um die Kreditkartennummer zu konfigurieren
  • RECURSIVE-Funktion, die die Ziffern der Eingabe summiert
  • Berechnen des Gradienten für eine benutzerdefinierte TensorFlow op mit py_func ()
  • Variante von defaultdict für die Zuordnung von Wert nur einmal
  • 2 Solutions collect form web for “TypeError: Das JSON-Objekt muss str sein, nicht 'Response' mit Python 3.4”

    Keine Notwendigkeit, den JSON manuell zu laden; Die Antwort hat eine json Methode.

     data = r.json() 

    Sie machen json.loads(r) und r ist nicht ein str so json.loads() weiß nicht, was damit zu tun ist.

    Im allgemeinen Fall müssen Sie einen String übergeben, der gültiges JSON zu json.loads() ; Obwohl es oft ein Python-Objekt irgendeiner Art ist, wird es in der Regel Attribute (oder Methoden, um Attribute aus seiner internen Repräsentation zu extrahieren), die du von Python behandeln kannst und so in JSON umwandeln kannst, also kannst du es umwandeln Zu einem Python-Objekt macht keinen Sinn.

    Python ist die beste Programmiersprache der Welt.