2017-08-04 13 views
0

GoogleプレイスリバースジオコードAPIを使用して、指定された住所の緯度と経度を返します。 APIは、多数のネストされたオブジェクトを含む大量のJSONファイルを返します。ここにGoogleのdocumentationがあります。Python/DjangoネストされたJSONを参照する

私はgeometry.location.latオブジェクトを取得しようとしています(ドキュメントを参照)。ここでエラーに続いて、私の現在のコードは、だそれが返されます。

address_coords = gmaps.geocode(raw_address) 

# gmaps makes the API request and returns the JSON into address_coords 

address_lat = address_coords['results']['geometry']['location']['lat'] 
address_lon = address_coords['results']['geometry']['location']['lng'] 

TypeError: List indices must be integers or slices, not str

を私はJSONオブジェクトを参照するかどうかはわかりません。

+0

アクセスしようとしているデータを表示する必要があります。エラーが示すように、そのデータ構造の少なくとも1つのレベルは、dictではなくリストです。 –

答えて

1

このエラーは、アレイをプロパティのようにインデックス付けしようとしていることを伝えています。あなたは、インデックス0で最初の項目の値を取得するために次の操作を行う必要があると思いますので、results

ほとんどの場合は、配列である:

address_coords['results'][0]['geometry']['location']['lng'] 

他の可能性がgeometryは、複数の座標が含まれていることであるあなたに同様に次のようにインデックスを付けることができます:

address_coords['results']['geometry'][0]['location']['lng'] 

どちらの方法でも、構造体を印刷して、配列対辞書の属性を確認する必要があります。

import pprint 

pprint.pprint(address_coords) 
関連する問題