【问题标题】:Python - extracting data from JSON response (using TomTom api)Python - 从 JSON 响应中提取数据(使用 TomTom api)
【发布时间】:2018-01-08 17:19:33
【问题描述】:

我正在尝试使用TomTom API 检索有关路线时间的信息。

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

我认为我从响应中获得了字典字典,并且应该能够使用 - jsonTomTomString['routes']['summary']['travelTimeInSeconds'] 访问数据

但我得到...

TypeError: 列表索引必须是整数,而不是 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.","privacy":"TomTom 保存的信息告诉我们如何以及何时 您使用我们的服务。这包括有关您的设备的信息 正在使用以及我们在您使用服务时收到的信息, 例如位置、路线、目的地和搜索查询。汤姆汤姆是 无法根据其收集的信息识别您的身份,并将 不要尝试。 TomTom 使用这些信息进行技术诊断,以 检测欺诈和滥用,创建使用报告,并改进其 服务。信息仅用于这些目的并用于 有限的时间,然后销毁。 TomTom 适用 基于行业标准的安全方法来保护 防止未经授权的访问的信息。 TomTom 不会给任何人 否则访问信息或将其用于任何其他目的,除非 根据正当法律程序,明确和合法地命令这样做。 您可以通过http://tomtom.com/privacy 了解更多信息。您可以联系 TomTom 去 http://tomtom.com/support.","routes":[{"summary":{"lengthInMeters":326856,"travelTimeInSeconds":13018,"trafficDelayInSeconds":818,"departureTime":"2018-01-08T17:10:31Z" ,"arrivalTime":"2018-01-08T20:47:28Z"},"legs":[{"summary":{"lengthInMeters":326856,"travelTimeInSeconds":13018,"trafficDelayInSeconds":818,"departureTime" :"2018-01-08T17:10:31Z","arrivalTime":"2018-01-08T20:47:28Z"},"points":[{"latitude":51.55598,"longitude":-0.28216}, {"latitude":51.55601,"longitude":-0.28292},{"latitude":51.55602,"longitude":-0.28384},{"latitude":51.55602,"longitude":-0.28395},{"latitude": 51.55602,"经度":-0.28442},{"纬度":51.55603,"经度":-0.28493},{"纬度":51.55603,"经度":-0.28564},{"纬度":51.55603,"经度" :-0.28611},

感谢您帮助解决此问题。

【问题讨论】:

    标签: python json dictionary tomtom


    【解决方案1】:

    我在"routes": 之后看到一个[,所以 routes 是一个数组。

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

    【讨论】:

    • 我也没有在 JSON 中看到“totalTimeSeconds”,除非它在截止之后的某个地方。所以应该是jsonTomTomString['routes'][0]['summary']['travelTimeInSeconds']
    猜你喜欢
    • 1970-01-01
    • 2014-09-18
    • 2021-11-24
    • 2017-04-16
    • 2019-09-25
    • 2017-01-21
    • 2014-03-07
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多