2017-05-24 149 views
-1

有一些我不明白如何打印JSON元素。随着Yelp的,由于此查询“https://api.yelp.com/v3/businesses/search?cc=FR&location=Toulouse&categories=movietheaters&limit=1”我可以检索该JSON:打印JSON元素

{ 
    "businesses": [ 
    { 
     "id": "gaumont-wilson-toulouse-2", 
     "name": "Gaumont Wilson", 
     "image_url": "https://s3-media1.fl.yelpcdn.com/bphoto/dYJc874NnEJ9-jX2amrLvw/o.jpg", 
     "is_closed": false, 
     "url": "https://www.yelp.com/biz/gaumont-wilson-toulouse-2?adjust_creative=Xi9rQmCT871UpMvNRzAfuw&utm_campaign=yelp_api_v3&utm_medium=api_v3_business_search&utm_source=Xi9rQmCT871UpMvNRzAfuw", 
     "review_count": 165, 
     "categories": [ 
     { 
      "alias": "movietheaters", 
      "title": "Cinema" 
     } 
     ], 
     "rating": 4, 
     "coordinates": { 
     "latitude": 43.6044154, 
     "longitude": 1.4475916 
     }, 
     "transactions": [], 
     "location": { 
     "address1": "3 place du Président Thomas Wilson", 
     "address2": null, 
     "address3": null, 
     "city": "Toulouse", 
     "zip_code": "31000", 
     "country": "FR", 
     "state": "31", 
     "display_address": [ 
      "3 place du Président Thomas Wilson", 
      "31000 Toulouse", 
      "France" 
     ] 
     }, 
     "phone": "+33534445050", 
     "display_phone": "+33 5 34 44 50 50", 
     "distance": 451.43923036020004 
    } 
    ], 
    "total": 11, 
    "region": { 
    "center": { 
     "latitude": 43.602510035320684, 
     "longitude": 1.4426422119140625 
    } 
    } 
} 

然后我看看JSON这样:

response_data = response.json() 
for i in response_data['businesses']: 
    print i['name'] 

'name'是我可以打印的嘛!我不能打印'address1','city''zip_code'

为什么?

+0

只是注意 - 这实际上不是一个JSON对象。这是一本字典 - 正如你所发现的,它有些不同。 –

回答

0

答案是:

for element in response_data['businesses']: 
    id = element['id'] 
    name = element['name'] 
    city = element['location']['city'] 
    zip_code = element['location']['zip_code'] 
    state = element['location']['state'] 
    display_address = element['location']['display_address'] 
    latitude = element['coordinates']['latitude'] 
    longitude = element['coordinates']['longitude'] 
    phone = element['phone'] 

    print id, name, city, zip_code, state, display_address, latitude, longitude, phone 
0

因为这些键不存在于JSON中的那个层次结构中。它们存在于字典中,与"location"密钥对应。您想要使用:

print i["name"]["location"]["address1"] 
+0

根本不工作:( –

0

因为那些存在于“位置”子字典中。您需要像这样:

print i["name"]["location"]["address1"]

访问数据。

+0

不,它不工作 –