我正尝试使用我从这里学到的语法在新的应用程序上。当我尝试解析结果时出现错误。我相信我误解的东西这个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