如何从响应中获取场地ID

时间:2019-05-16 06:09:06

标签: python json for-loop foursquare

由于我刚开始使用Python,因此在访问密钥时遇到了一些困难。
我想遍历作为JSON响应获得的每个Foursquare场所,以获得场所ID。然后应添加场地ID作为参数,以获取场地的所有详细信息。

我已经在for循环中尝试过,但是没有用:

for a in data['response']['groups']['items']['venue']:
my_place_id = place['id']

venue_ID_resp = requests.get(url=url_venue_details,params=my_place_id)

错误消息:

for a in data['response']['groups']['items']['venue']:
TypeError: list indices must be integers or slices, not str

响应如下:

'response':{  
   'groups':[  
      {  
         'items':[  
            {  
               'reasons':{  
                  'count':0,
                  'items':[  
                     {  
                        'reasonName':'globalInteractionReason',
                        'summary':'This '                        'spot '                        'is '                        'popular',
                        'type':'general'
                     }
                  ]
               },
               'referralId':'e-0-52bf5eca498e01893b7004fb-0',
               'venue':{  
                  'categories':[  
                     {  
                        'icon':{  
                           'prefix':'https://ss3.4sqi.net/img/categories_v2/travel/hostel_',
                           'suffix':'.png'
                        },
                        'id':'4bf58dd8d48988d1ee931735',
                        'name':'Hostel',
                        'pluralName':'Hostels',
                        'primary':True,
                        'shortName':'Hostel'
                     }
                  ],
                  'id':'52bf5eca498e01893b7004fb',
                  'location':{  

我只想获取场地ID,例如:

print(my_place_id)

4bf58dd8d48988d1ee931234
4bf58dd8d48988d1ee945225
4bf58dd8d48988d1ee931888
4bf58dd8d48988d1ee564563
.
.
.

2 个答案:

答案 0 :(得分:0)

响应JSON items中的

group是一个列表。这是您收到错误的原因:“ TypeError: list indices must be integers or slices, not str”因为列表索引不能为字符串。

@tfw正确指出,即使组是一个列表,所以也应该是

您需要以data['response']['groups'][0]['items'][0]['venue']的身份访问它

如果项目列表中有多个元素,那么最好遍历它们并像下面一样访问

for x in data['response']['groups']:
    for y in x['items']
        print y['venue']

答案 1 :(得分:0)

您的Json包含列表。您可以获得ID:

my_id = data['response']['groups']['items'][0]['venue']['categories'][0]['id']

注意:如果列表中有更多元素,则可以创建for循环并获取所有ID。