在Python中循环JSON数组

2024-05-14 07:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我从一个API获取了以下数据。我试图使用Python脚本访问餐厅名称,并让脚本显示它。这是我的文件:

测试.py

with open('data.json') as data_file:    
    data = json.load(data_file)
    for restaurant in data:
        print data ['restaurants'][0]['restaurant']['name']

我的JSON文件如下:(简化)

    {
  "results_found": 3296,
  "results_start": 0,
  "results_shown": 20,
  "restaurants": [
    {
      "restaurant": {
        "R": {
          "res_id": 9101083
        },
        "id": "9101083",
        "name": "My Meat Wagon",
          "address": "Market Square, Smithfield, Dublin Dublin 7",
          "locality": "Smithfield",
          "city": "Dublin",
          "city_id": 91,
          "latitude": "53.3489980000",
          "longitude": "-6.2788120000",
          "zipcode": "Dublin 7",
        "events_url": "https://www.zomato.com/dublin/my-meat-wagon-smithfield/events#tabtop?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1",
        "establishment_types": []
      }
    },
    {
      "restaurant": {
        "R": {
          "res_id": 9101628
        },
        "id": "9101628",
        "name": "Wowburger",
        "url": "https://www.zomato.com/dublin/wowburger-temple-bar?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1",
        "location": {
          "address": "The Workmans Club, 11 Wellington Quay, Temple Bar, Dublin Dublin 2",
          "locality": "The Workmans Club",
          "city": "Dublin",
          "city_id": 91,
          "latitude": "53.3452863158",
          "longitude": "-6.2663815543",
          "zipcode": "Dublin 2",
          "country_id": 97,
          "locality_verbose": "The Workmans Club, Dublin"
        },
        "switch_to_order_menu": 0,
        "cuisines": "Burger",
        "average_cost_for_two": 20,
        "establishment_types": []
      }
    },
    {
      "restaurant": {
        "R": {
          "res_id": 16520426
        },
        "id": "16520426",
        "name": "Brother Hubbard",
          "locality_verbose": "North City, Dublin"
        },

目前,它显示第一个餐厅名称三次。我希望它循环遍历每个restaurant对象并显示键“name”的值。任何帮助都将不胜感激。


Tags: thename脚本apiidcitydatares
2条回答
with open('data.json') as data_file:    
data = json.load(data_file)
for restaurant in data['restaurant']:
    print restaurant['restaurant']['name']

这样,您就可以在“餐厅”字段中循环遍历字典列表中的元素,并输出它们的名称。

你真的很接近,你之前做的是循环遍历json文件中的所有主字段,每次都打印第一家餐厅的名称(data['restaurants'][0]给你餐厅列表中的第一家餐厅。。。你每次都打印它的名字)

restaurants是您的列表时,您必须遍历此键:

for restaurant in data['restaurants']:
    print restaurant['restaurant']['name']

相关问题 更多 >

    热门问题