webentwicklung-frage-antwort-db.com.de

TypeError: Das JSON-Objekt muss str sein und nicht 'dict'.

Sorry Jungs, ich konnte die befriedigende Antwort nicht finden, um einen Teil der Antwort von Json zu drucken. Kann mir hier bitte jemand helfen:

import json
import requests
import pprint 

response = requests.get('<api endpoing>')
json_data = response.json()
print(json.dumps(json_data, indent=4, sort_keys=True))

Json Antwort wäre 

{
    "Value1": "SomeValue",
    "data": {
        "subval1": false,
        "subval2": "0a4",
        "subval3": "",
        "subval4": "Click h!",
        "subval5": "1002",
        "subval6": "932",
        "subval7": "i2",
        "subval8": 250,
        "subval9": 0,
        "subval10": 1,
        "subval11": 3,
        "subval12": 1,
        "subval13": "<!>",
        "subval14": "",
        "subval15": "Click !!",
        "subval16": "",
        "subval17": 300
    },
    "error": true,
    "message": "Success",
    "status": 200
}

Nun möchte ich nur die "data": Werte durchqueren und drucken. Ich werde folgendes tun 

data = json.loads(json_data)
data_set = (data['data'])
print(data_set)

Aber der Fehler Im bekommen: TypeError: das JSON-Objekt muss str sein, nicht 'dict'

7
Manoj Kengudelu

Sie brauchen nicht json.loads(json_data), da es bereits ein Python-Dikt ist. Sie müssen dieses Dikt nur direkt ausgeben. Die Ausgabe eines Json-Strings aus einem Dict ist json.dumps()s Aufgabe:

json.dumps(json_data["data"])
10
n00dl3

Die json()-Methode gibt tatsächlich ein json -Objekt zurück, sodass Sie json.loads nicht verwenden müssen.

Oder du kannst verwenden

r=requests.get("")
print json.loads(r.content)

Weitere Details finden Sie unter JSON Response Content .

0
McGrady