如何读取json响应的不同键值对?

时间:2019-05-02 17:28:11

标签: python json api google-maps-api-3

这个问题使我发疯:

我请求谷歌api获得距离和持续时间的json响应。但是我无法访问此json响应的不同键值对。我收到一个无法下标的Type Error对象。

import requests
import json
link = 'https://maps.googleapis.com/...'
gmaps_json = requests.get(link).json()

我收到以下json响应:

{'destination_addresses': ['XXXXXX 3, 30165 Hannover, Germany'], 'origin_addresses': ['XXXXX 17, XXXXX XXXXXX, Germany'], 'rows': [{'elements': [{'distance': {'text': '196 km', 'value': 196077}, 'duration': {'text': '2 hours 10 mins', 'value': 7821}, 'status': 'OK'}]}], 'status': 'OK'}

我已经尝试过访问“行”:

gmaps_json['rows'] 
gmaps_json[3]

但是TypeError'NoneType'总是不可订阅的

1 个答案:

答案 0 :(得分:0)

同样,使用您提供的JSON,我可以解析所有内容。这是一个可以帮助您的小例子。

gmaps_json = {'destination_addresses': ['XXXXXX 3, 30165 Hannover, Germany'], 'origin_addresses': ['XXXXX 17, XXXXX XXXXXX, Germany'], 'rows': [{'elements': [{'distance': {'text': '196 km', 'value': 196077}, 'duration': {'text': '2 hours 10 mins', 'value': 7821}, 'status': 'OK'}]}], 'status': 'OK'}

print("Distance : {}".format(gmaps_json['rows'][0]['elements'][0]['distance']))
print("Duration : {}".format(gmaps_json['rows'][0]['elements'][0]['duration']))
print("Status : {}".format(gmaps_json['rows'][0]['elements'][0]['status']))