2017-10-09 14 views
0

を追加し、これはコードPythonはJSONレスポンスを読み取り、Iは​​、要求モジュールとPOST要求を開発し、私はJSONを取得

headers_ = {'Authorization': acc_token} 
    params_ = (('start_time', '2016-08-01T00:00:00+00:00'),('limit', '2')) 

    r = requests.get('https://server.com/API/v1', headers=headers_, params=params_) 
    data_ = r.json() 
    json_result = (json.dumps(data_, indent=4, sort_keys=False)) 

であり、これは、JSON結果

{ 
"loc":[ 
    { 
    "origin":{ 
     "lat":39.72417, 
     "lng":-104.99984, 
     "eta_seconds":null, 
     "address":"" 
    }, 
    "destination":{ 
     "lat":39.77446, 
     "lng":-104.9379, 
     "eta_seconds":null, 
     "address":null 
    } 
    }, 
    { 
    "origin":{ 
     "lat":39.77481, 
     "lng":-104.93618, 
     "eta_seconds":null, 
     "address":"10 Albion Street" 
    }, 
    "destination":{ 
     "lat":39.6984, 
     "lng":-104.9652, 
     "eta_seconds":null, 
     "address":null 
    } 
    } 

] } あります今私は各json items配列のlatとlngの値を配列に追加しようとしています。このコードで試してみました。

が、私はこのエラー TypeError例外があります:文字列のインデックスは整数でなければなりません、

がどのように私は、配列の各要素のための緯度値とLNGを取得し、辞書に追加することができstrがありませんか?それはjson.dumps()の結果であるため、

おかげ

+1

は、それは '私べきではありません['loc'] [1] ['origin'] ['lat'] '。 'loc'は辞書のリストを含んでいるので。 – kstullich

+0

私は同じエラーを受け取ります – APPGIS

+0

JSONの結果を変数に入れ、 'print(data [" loc "] [1] [" lat "])'を実行すると、目的の出力が得られます。 – kstullich

答えて

2

json_resultは、文字列です。

これはまったく必要ありません。行全体を削除し、data_で直接操作してください。

(スタイルのポイントとしては、これらの不要な末尾が浮き彫りに追加を停止してください。)

+0

私は試してみましたが、エラーは同じです:TypeError:文字列のインデックスは整数でなければなりません – APPGIS

2

だから、問題はあなたのjsonであなたにkeysのそれぞれを返します。これは、このfor i in json_resultです。あなたは、単に行うことができます。

for entry in json_result.get('loc'): 
    do stuff here.... 
0

だけで異なるソリューション、あなたはまだエラーを取得している場合、あなたはまた、唯一のLNG一部、LATをフェッチするために正規表現を試すことができます。

import re 
convert=str(json_result) 

pattern=r"(l([ng]|[at]).'):\s[-]?\d{0,15}.\d{0,15}" 

match=re.finditer(pattern,convert) 


print([i.group() for i in match]) 
関連する問題