2017-06-18 8 views
-3

Ich versuche auf bestimmte JSON-Daten zuzugreifen und unten ist der Code. Ich benutze Python 2.7. jedoch kommen sie mit Fehler Typeerror aus: String-Indizes müssen ganze Zahlen sein:So lösen Sie TypeError: String-Indizes müssen Ganzzahlen sein

http = win32com.client.Dispatch('MSXML2.XMLHTTP.6.0') 
http.open('POST', 'url', False, username, password) 
http.setRequestHeader("Content-type" , "text/json"   ) 
http.setRequestHeader("User-Agent"  , "Your User Agent String") 
http.setRequestHeader("Accept-Encoding" , "gzip, deflate"  ) 
http.setRequestHeader("Content-Encoding", "gzip, deflate"  ) 
global data 
http.send(json) 

global data 
data = http.responseText 
#data=data.split("{}{}") -try to make json data print nicely but failed. 
print data['responses'][0]['status'] 

meine Json Daten wie unten

{ 
    "responses": [ 
     { 
      "tran_id": "1234", 
      "UUID": "122262d7-85f8-4e53-af98-865627cb82cb", 
      "status": "success", 
      "messages": [], 
      "result_params": { 
       "record_count": "1" 
      }, 
      "result_table": [ 
       { 
        "id": "101160766", 
        "rev": "13", 
        "hierarchy_id": "F80005AF46FF0000B5EA6FE06078159E80", 
        "is_current": "1"}} 

,

+1

Ihr JSON ist nicht korrekt. – Ravi

Antwort

0

Sie haben falsch JSON, die Am Ende fehlen ein paar Klammern.

"is_current": "1"}} 

sollte

ändern Ihre "Content-Type" Header-Feld nicht korrekt ist
"is_current": "1"}]}]} 

>>Demo<<

+0

der JSON ist korrekt. es von einer Webseite. Ich bin derjenige, der es falsch kopiert. aber der Punkt ist da. es kommt mit Fehler heraus, wenn ich versuche, spezifische Daten von verschachtelten JSON-Daten zu lesen – jess

+0

Aber es funktioniert gut. Sie könnten meinen Demo-Link – Ravi

+0

verweisen, ich frage mich, ist es, weil meine realen JSON-Daten, die ich bekomme, nicht gut eingerückt sind, wie ich oben gezeigt habe. über Daten direkt kopiere ich von JSON-Ausgabe, die ich von Postbote-Apps bekomme. Die Info ist gleich. nur die Art, wie Daten gedruckt werden, ist anders. Denkst du, dass es der Grund ist, warum es nicht mit mir funktioniert? – jess

0

a). Es sollte Anwendung/JSON sein.

b) Ihr "Content-Encoding" Header-Feld ist wahrscheinlich falsch. Es heißt, Sie senden sowohl deflate- und gzip-codierte Daten.

+0

haben sie einen vorschlag für b)? weil ich mit Deflate- und Gzip-kodierten Daten nicht vertraut bin – jess

Verwandte Themen