2017-06-02 5 views
-1

Ich habe eine JSON-Daten wie folgt aus:TypeError beim Teilen von Json-Daten erhalten?

json_data = '{"data":"[{"Date":"3/17/2017","Steam Total":60},{"Date":"3/18/2017","Steam Total":15},{"Date":"3/19/2017","Steam Total":1578},{"Date":"3/20/2017","Steam Total":1604}]", "data_details": "{"data_key":"Steam Total", "given_high":"1500", "given_low":"1000", "running_info": []}"}' 

json_input_data = json_data["data"] 
json_input_additional_info = json_data["data_details"] 

ich eine Störung erhalte:

Typeerror: String-Indizes ganze Zahlen sein müssen, nicht str

Ich denke, es ist ein Fehler in der json Daten. Kann mir jemand dabei helfen?

+0

json_data = '{"data": "[.... im letzten Zitat gibt es einen Fehler, Sie wollen ein Array deklarieren, aber stattdessen wurde eine Zeichenkette wegen dieses Zitats deklariert. – Izuel

+0

Ja JSON Datenformat ist falsch, sollte es sein: json_data = {"data": [{"Datum": 17.03.2017 "," Steam Total ": 60}, {" Date ":" 18.03.2017 ", "Steam Total": 15}, {"Datum": "19.03.2017", "Steam Total": 1578}, {"Date": "20.03.2017", "Steam Total": 1604}] , "data_details": {"data_key": "Steam Gesamt", "given_high": "1500", "given_low": "1000", "running_info": []}} Versuchen Sie einen beliebigen JSON-Parser, um JSON-Daten http://json.parser.online.fr/ – Anup

Antwort

2

In Ihrem Code hat einige Probleme.

  1. Der Code: json_input_data = json_data["data"], die Variable json_data ist kein JSON-Objekt, ist ein String-Objekt, und Sie versuchen, eine Zeichenfolge Position von String-Schlüssel gehen, dass erhalten ein Json Objekt aus string json verwenden json api: json

  2. Sie JSON-String nicht gültig ist, dies eine gültige Version ist:
    {"data":[{"Date":"3/17/2017","Steam Total":60},{"Date":"3/18/2017","Steam Total":15},{"Date":"3/19/2017","Steam Total":1578},{"Date":"3/20/2017","Steam Total":1604}], "data_details": {"data_key":"Steam Total", "given_high":"1500", "given_low":"1000", "running_info": []}}

  3. nun Ihr Code funktioniert gut.

0

Sie hatten Recht. Dein JSON ist in der Tat falsch.

Können Sie versuchen, diesen Json zu verwenden?

{ 
    "data":[ 
     { 
     " Date":"3/17/2017", 
     "Steam Total":60 
     }, 
     { 
     "Date":"3/18/2017", 
     "Steam Total":15 
     }, 
     { 
     "Date":"3/19/2017", 
     "Steam Total":1578 
     }, 
     { 
     "Date":"3/20/2017", 
     "Steam Total":1604 
     } 
    ], 
    "data_details":{ 
     "data_key":"Steam Total", 
     "given_high":"1500", 
     "given_low":"1000", 
     "running_info":[] 
    } 
} 
1

Versuchen Sie json_data zu JSON-Format Parsing (mit JSON.parse(json_data)). Momentan ist der Typ string - was genau Ihr Fehler sagt.

+0

Wenn Sie diese Daten aus einer Dump-Datei abrufen, versuchen Sie, Ihre Daten zu stringieren, bevor Sie sie in die Datei schreiben Beispiel: Wenn Sie Python zum Speichern in die Datei verwenden, verwenden Sie json. Dumps (Ihre_Daten), und lesen Sie es dann mit JSON zurück .loads (Dateiinhalt) – anilkumarggk

0

Wie Pongpira Upra wies darauf hin, ist Ihre Json nicht gut gebildet und sollte so etwas sein.

{ 
    "data":[ 
     { 
     "Date":"3/17/2017", 
     "Steam Total":60 
     }, 
     { 
     "Date":"3/18/2017", 
     "Steam Total":15 
     }, 
     { 
     "Date":"3/19/2017", 
     "Steam Total":1578 
     }, 
     { 
     "Date":"3/20/2017", 
     "Steam Total":1604 
     } 
    ], 
    "data_details":{ 
     "data_key":"Steam Total", 
     "given_high":"1500", 
     "given_low":"1000", 
     "running_info":[] 
    } 
} 

Um Informationen abzurufen, sollten Sie

json_data[0]["Date"] 

Dieses „2017.03.17“

0

Sie deklarieren eine Zeichenfolge json_data und, na ja, dann wirkt wie es genannt würde drucken schreiben ein Faden. Das sagt Ihnen die Ausnahme. Wie andere hier versucht zu sagen - Sie tun haben auch einen Fehler in Ihren Daten, aber die Ausnahme, die Sie geliefert haben, ist aufgrund der Zugriff auf die Zeichenfolge, als ob es ein Wörterbuch war. Sie müssen z. B. einen fehlenden Anruf hinzufügen. json.loads(...).

Verwandte Themen