Python - 从JSON响应中提取数据(使用TomTom api)

时间:2018-01-08 17:19:34

标签: python json dictionary tomtom

我尝试使用TomTom API检索路线时间信息。

通过提供API网址,API密钥(that you can get by registering)以及我想要返回旅行时间的源和目的地纬度/经度。

我以为我从响应中获取字典词典,并且应该能够使用-jsonTomTomString ['路由'] ['摘要'] [&]来访问数据#39; travelTimeInSeconds']

但我得到......

  

TypeError:list indices必须是整数,而不是str

我的代码如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import ConfigParser
import requests
import json
import sys
import time
import datetime

from urllib import urlopen

# URL to the tomtom api
apiURL      = "https://api.tomtom.com/routing/1/calculateRoute/"
# apiKey
apiKey      = "get this from link in description"

#[coordinates]
sourceLat   = 51.5560241
sourceLon   = -0.2817075
destLat     = 53.4630621
destLon     = -2.2935288

tomtomURL = "%s/%s,%s:%s,%s/json?key=%s" % (apiURL,sourceLat,sourceLon,destLat,destLon,apiKey)

getData = urlopen(tomtomURL).read()
jsonTomTomString = json.loads(getData)

totalTime = jsonTomTomString['routes']['summary']['totalTimeSeconds']

print ("time to destination is: ", totalTime)

JSON响应看起来像这样......

  

{" formatVersion":" 0.0.12"," copyright":"版权所有2018 TomTom   国际BV。版权所有。这个导航数据是   TomTom International BV的专有版权,仅可使用   根据完全执行的许可协议的条款   在TomTom International BV或授权之间签订   经销商和你自己。如果您还没有签订此类许可证   协议您无权以任何方式使用此数据   应立即将其退回TomTom International   BV。","隐私":" TomTom保留信息告诉我们如何以及何时   你使用我们的服务。这包括有关您的设备的信息   正在使用和我们在您使用服务时收到的信息,   例如位置,路线,目的地和搜索查询。 TomTom是   无法根据收集的信息识别您,并且会   不要试图。 TomTom使用技术诊断信息来   检测欺诈和滥用行为,创建使用情况报告并改进其使用情况   服务。该信息仅用于这些目的和a   有限的时间,之后它被摧毁。 TomTom适用   安全方法基于行业标准来保护   防止未经授权访问的信TomTom不会给任何人   否则访问该信息或将其用于任何其他目的,除非   在适当的法律程序后明确和合法地命令这样做。   您可以在http://tomtom.com/privacy找到更多信息。你可以联系   TomTom去了   http://tomtom.com/support""路线":[{"总结" {" lengthInMeters":326856," travelTimeInSeconds&#34 ;:13018" trafficDelayInSeconds":818," departureTime":" 2018-01-08T17:10:3​​1Z"" arrivalTime&#34 ;: " 2018-01-08T20:47:28Z"}"腿":[{"总结" {" lengthInMeters":326856, " travelTimeInSeconds":13018" trafficDelayInSeconds":818," departureTime":" 2018-01-08T17:10:3​​1Z"&# 34; arrivalTime":" 2018-01-08T20:47:28Z"}"点":[{"纬度":51.55598&#34 ;经度": - 0.28216},{"纬度":51.55601"经度": - 0.28292},{"纬度":51.55602&#34 ;经度": - 0.28384},{"纬度":51.55602"经度": - 0.28395},{"纬度":51.55602&#34 ;经度": - 0.28442},{"纬度":51.55603"经度": - 0.28493},{"纬度":51.55603&#34 ;经度": - 0.28564},{"纬度":51.55603"经度": - 0.28611 },

感谢您帮助我们开展工作。

1 个答案:

答案 0 :(得分:1)

我在[之后看到"routes":,因此路由是一个数组。

尝试jsonTomTomString['routes'][0]['summary']['totalTimeSeconds']