2017-06-18 10 views
-3

私は特定のjsonデータにアクセスしようとしています。私はPython 2.7を使用しています。しかし、それはエラーTypeError例外で出てくる:TypeErrorを解決する方法:文字列インデックスは整数でなければなりません

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'] 

{ 
    "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

jsonが正しくありません。 – Ravi

答えて

0

の下にあなたがJSON間違っを持っているように、私のJSONデータは、次のとおりです。文字列のインデックスは整数でなければなりません最後に括弧がありません。

"is_current": "1"}} 

a)は、あなたの "Content-Type" ヘッダフィールドが誤っている

"is_current": "1"}]}]} 

>>Demo<<

+0

JSONが正しいです。それはいくつかのウェブサイトからです。それを間違ってコピーする人しかしポイントはそこにある。入れ子になったJSONデータから特定のデータを読み込もうとするとエラーが出る – jess

+0

しかし、正常に動作しています。あなたは私のデモリンクを参照することができます – Ravi

+0

私は実際のjsonのデータが私が上に示したようによくインデントされていないので、それは本当ですか?上記のデータは、私が郵便配達のアプリから得たjson出力から直接コピーします。情報は同じです。データの印刷方法のみが異なります。それは私と一緒に働く理由ではないと思いますか? – jess

0

に変更する必要があります。それはapplication/jsonでなければなりません。

b) "content-encoding"ヘッダーフィールドが間違っている可能性があります。それはの両方をのdeflateとgzipでエンコードされたデータで送信しているとのことです。

+0

のimにb)の提案がありますか? deflateとgzipでエンコードされたデータに慣れていない – jess

関連する問題