【问题标题】:Calling a JSON API调用 JSON API
【发布时间】:2015-12-19 22:32:34
【问题描述】:

程序将提示输入位置,联系 Web 服务并检索 Web 服务的 JSON 并解析该数据,并从 JSON 中检索第一个 place_id。地点 ID 是在 Google 地图中唯一标识地点的文本标识符。

API 端点

要完成这项任务,您应该使用这个具有 Google 数据静态子集的 API 端点:

http://python-data.dr-chuck.net/geojson

此 API 使用与 Google API 相同的参数(传感器和地址)。此 API 也没有速率限制,因此您可以根据需要随时进行测试。如果您访问不带参数的 URL,您将获得可用于此 API 的所有地址值的列表。

import urllib
import json

serviceurl = 'http://python-data.dr-chuck.net/geojson'

while True:
    address = raw_input('Enter location: ')
    if len(address) < 1 : break

    url = serviceurl + urllib.urlencode({'sensor':'false', 'address':  address})
    print 'Retrieving', url
    uh = urllib.urlopen(url)
    data = uh.read()
    print 'Retrieved',len(data),'characters'

    js = json.loads(str(data))

我很困惑 place_id 在哪里?我所能看到的只是一个包含许多大学名称的列表。我该如何解决这个问题?

【问题讨论】:

  • 不知道你在问什么
  • @PadraicCunningham:他们没有得到预期的结果(不是带有 place_id 键的 JSON 对象)。那是因为他们错误地调用了服务。
  • @MartijnPieters,我明白这一点,但它确切地告诉他们在问题中要做什么。
  • @PadraicCunningham:所以这里缺少的是找出问题所在..
  • @MartijnPieters,或者去specsavers之旅..

标签: python json api


【解决方案1】:

阅读你的作业:

如果您访问不带参数的 URL,您将获得可用于此 API 的所有地址值的列表。

服务认为你没有传入参数,那是因为你没有正确地形成你的 URL:

url = serviceurl + urllib.urlencode({'sensor':'false', 'address':  address})

你需要一个?问号来分隔URL路径和查询字符串; 带有问号的 URL 返回一个带有 results 键的完整 JSON 对象:

url = serviceurl + '?' + urllib.urlencode({'sensor':'false', 'address':  address})

生成的 JSON 对象有点像这样:

{
   "results" : [
      {
         "address_components" : [
             # component dictionaries
         ],
         "formatted_address" : "Virginia Tech Trail, Virginia Beach, VA 23455, USA",
         "geometry" : {
             # geometry dictionary
         },
         "partial_match" : true,
         "place_id" : "ChIJw0P35CuUuokROoH5mxE5Pyg",
         "types" : [ "route" ]
      }
   ],
   "status" : "OK"
}

所以results 键是一个列表,包含字典。每个这样的字典都有一个'place_id' 键。

【讨论】:

    猜你喜欢
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 2017-12-22
    • 2020-09-13
    相关资源
    最近更新 更多