2016-08-13 6 views
0

Ich habe versucht, Daten von JSON zu erhalten. Aber anstatt Daten erhalte ich TypeError:TypeError: String-Indizes müssen Integer sein

'TypeError: string indices must be integers' 

Hier IST meinen Code:

api.authenticate(LOGIN, CONN) 
profil = api.get_profile("abc") 
data = json.dumps(profil, indent=4) 
print(data["login"]) 

JSON-Datei:

{ 
    "public_email": "", 
    "violation_url": null, 
    "is_blocked": false, 
    "links_published": 0, 
    "login": "abc", 
    "links_added": 1, 
    "gg": "", 
    "signup_date": "2014-10-26 21:15:41", 
} 

Ich habe die Suche nach Lösung (google, SO), aber ich kann nicht finde oder arbeite nicht für mich.

+1

Warum Sie anrufen 'json.dumps'? Damit wird die Datenstruktur, die '.get_profile' scheinbar für Sie aus dem JSON erzeugt hat, * in eine Zeichenkette * zurückversetzt. – jonrsharpe

+0

Wenn ich 'json.loads' anrufe, bekomme ich einen weiteren Fehler. Und 'json.dumps' funktioniert in einem anderen Code –

+1

** Was ** *" ein anderer Fehler "*? Ich sage, du brauchst 'json' nichts, nur * profile' *; es scheint bereits ein Wörterbuch zu sein. – jonrsharpe

Antwort

-1

Es gibt eine zusätzliche , in Ihrer JSON-Datei am Ende. Löschen dies:

{ 
    "public_email": "", 
    "violation_url": null, 
    "is_blocked": false, 
    "links_published": 0, 
    "login": "abc", 
    "links_added": 1, 
    "gg": "", 
    "signup_date": "2014-10-26 21:15:41" 
} 

Dann load die JSON-Datei (nicht dump):

with open('abc.json') as data_file:  
    data = json.load(data_file) 

print(data["login"]) 
Verwandte Themen