使用python

时间:2018-01-31 20:01:43

标签: python json list object

我收到了以json形式从foursquare收到的回复。我试图访问对象的某些部分,但没有成功。我如何访问说出对象的地址?这是我尝试过的代码。

url = 'https://api.foursquare.com/v2/venues/explore'

params = dict(client_id=foursquare_client_id,
              client_secret=foursquare_client_secret,
              v='20170801', ll=''+lat+','+long+'',
    query=mealType, limit=100)

resp = requests.get(url=url, params=params)

data = json.loads(resp.text)
msg = '{} {}'.format("Restaurant Address: ", 
data['response']['groups'][0]['items'][0]['venue']['location']['address'])
print(msg)

以下是json响应的示例:

"items": [
      {
        "reasons": {
          "count": 0,
          "items": [
            {
              "summary": "This spot is popular",
              "type": "general",
              "reasonName": "globalInteractionReason"
            }
          ]
        },
        "venue": {
          "id": "412d2800f964a520df0c1fe3",
          "name": "Central Park",
          "contact": {
            "phone": "2123106600",
            "formattedPhone": "(212) 310-6600",
            "twitter": "centralparknyc",
            "instagram": "centralparknyc",
            "facebook": "37965424481",
            "facebookUsername": "centralparknyc",
            "facebookName": "Central Park"
          },
          "location": {
            "address": "59th St to 110th St",
            "crossStreet": "5th Ave to Central Park West",
            "lat": 40.78408342593807,
            "lng": -73.96485328674316,
            "labeledLatLngs": [
              {
                "label": "display",
                "lat": 40.78408342593807,
                "lng": -73.96485328674316
              }
            ],

可以找到完整的回复here

4 个答案:

答案 0 :(得分:1)

您的代码(至少在加载和访问对象时)对我来说是正确的。我从一个文件中加载了json(因为我没有你的foursquare id)并且它运行正常。您正确使用对象/字典键和数组位置导航到您想要的。但是,您在向下钻取到数据的行中拼错了“地址”。添加缺少的'a'使它工作。我也在纠正你发布的网址中的拼写错误。

我回答了这个问题,假设您链接到的示例JSON是data中存储的内容。如果不是这种情况,那么查看data中存储的python的相对简单的方法是import pprint,并使用它如下:pprint.pprint(data)

您还可以通过使用-i开关运行程序来启动交互式python shell,并自行检查变量。

答案 1 :(得分:0)

喜欢这样

addrs=data['items'][2]['location']['address']

答案 2 :(得分:0)

data["items"][2]["location"]["address"]

这将为您访问该地址。

答案 3 :(得分:0)

对于dict,如果是数组和字符串索引,则可以使用整数索引进入任何级别的嵌套。 就像你的情况一样,item是一个数组

item[0]['location']

现在items [0]是一个字典,所以我们通过字符串索引访问

item[0]['location']['address]

现在又是一个对象,我们使用字符串索引

{{1}}