2016-04-25 15 views
1

Ich habe Abfrage, wo ich JSON-Datei abholen und die Daten in der Tabelle in HTML anzeigen möchte. Ich bekomme jetzt Fehler: TypeError: String-Indizes müssen Ganzzahlen in Zeile: 'Status': Element ['Status'] ,. Ist das Problem mit äußeren Klammern, weil sie in JSON fehlen oder was?JSON-Datei mit Python in Django analysieren

views.py Code

json_obj = urllib2.urlopen(url) 
data = json.load(json_obj) 
results = [] 
for item in data: 
    results.append({ 
     'status': item['status'], 
     'device': item['device'], 
     }) 
return render(request, 'index/index.html', {'objects_list': results}) 

JSON-Datei:

{ 
    “version": “3.62”, 
    "treesize": 2, 
    "": [ 
    { 
     “status”: “up”, 
     "device": “someDeviceName1”, 
    } 
    { 
     “status”: “up”, 
     "device": “someDeviceName2”, 
    }] 
} 
+0

'Daten' ist das Wörterbuch mit drei Elementen: '" version "', '" treesize "' und '" ". –

+1

'json.load (json)' macht keinen Sinn. Ist Ihre Eingabe wirklich in der Variablen 'json' gespeichert? –

+0

Was DisplayName gesagt hat. 'json = urllib2.urlopen (url)' bindet den Namen 'json' an das URL-Handle, so dass es nicht mehr auf das' json'-Modul verweist. –

Antwort

2

Ich weiß nicht, ob Sie das JSON Inhalt falsch oder nicht versehentlich kopiert, aber was Sie tun sollten ist:

>>> for item in data[""]: 
...  results.append({ ... 
+0

Ja, das habe ich vermisst. Vielleicht war ich einfach verwirrt, dass das Array keinen Namen hat. – MMakela

+0

Hinzufügen von read() zur Antwort gibt mir einen Fehler: AttributeError: 'str' Objekt hat kein Attribut 'lesen' – MMakela

+0

Hinzugefügt, um die richtige Antwort, wie dies funktioniert, wenn ich Daten [""] zu meinem ursprünglichen Code in views.py . – MMakela