我正嘗試使用我從這裏學到的語法在新的應用程序上。當我嘗試解析結果時出現錯誤。我相信我誤解的東西這個JSON響應,因爲相同的語法同樣適用於其他應用程序解析JSON錯誤
精細典型迴應如下 -
outputs =
[[{u'results': [{u'address_components': [{u'long_name': u'Arumeru',
u'short_name': u'Arumeru',
u'types': [u'administrative_area_level_2',
u'political']},
{u'long_name': u'Arusha',
u'short_name': u'Arusha',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'Tanzania',
u'short_name': u'TZ',
u'types': [u'country',
u'political']}],
u'formatted_address': u'Arumeru, Tanzania',
u'geometry': {u'bounds': {u'northeast': {u'lat': -2.9567556,
u'lng': 37.0479585},
u'southwest': {u'lat': -3.7703911,
u'lng': 36.541356}},
u'location': {u'lat': -3.2923144,
u'lng': 36.8250274},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': -2.9567556,
u'lng': 37.0479585},
u'southwest': {u'lat': -3.7703911,
u'lng': 36.541356}}},
u'types': [u'administrative_area_level_2', u'political']}],
u'status': u'OK'}]]
output = open('geocoding_results_Tanzania.csv', 'w+')
writer = csv.DictWriter(output, delimiter=',', fieldnames=['location_lat', 'location_lng'])
writer.writeheader()
pprint([results])
for results in outputs[0]["results"][0]["geometry"]["location"]:
params = {
'location_lat': results['lat'],
'location_lng': results['lng'],
}
writer.writerow(params)
錯誤 -
location_lat': results['lat'],
TypeError: string indices must be integers
然而,當我按照建議@Padraic
lat = outputs[0]["results"][0]["geometry"]["location"]['lat']
lng = outputs[0]["results"][0]["geometry"]["location"]['lng']
print(lat,lng)
我得到了正確的值。
(-3.2923144, 36.8250274)
當迭代結果時我做錯了什麼?
請顯示錯誤實際發生的代碼。 – poke 2015-02-10 10:09:25
準確顯示您如何獲得回覆。好像你還沒有將JSON字符串解碼爲Python對象。 – 2015-02-10 10:11:39
感謝您的回覆。啊,所以我應該使用json.dumps? – LearningSlowly 2015-02-10 10:15:20