Навигация по JSON с несколькими массивами в Python - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь пройти через JSON с помощью python, но не могу получить доступ к узлу "mbid". Я хочу напечатать только первый "mbid" узел.

Вот моя функция:

def get_data():
    newJsonx = dict()
    for item in data["resultsPage"]["results"]["calendarEntry"]:
        mbid = item["event"]["performance"][0]["artist"]["identifier"][0]["mbid"]

С этой функцией я получаю эту ошибку: IndexError: list index out of range

нокогда я делаю

def get_data():
    newJsonx = dict()
    for item in data["resultsPage"]["results"]["calendarEntry"]:
        mbid = item["event"]["performance"][0]["artist"]["identifier"]

и print(mbid), я получаю правильный ответ:

"identifier": [
  {
   "mbid": "6655955b-1c1e-4bcb-84e4-81bcd9efab30"
  },
  {
   "mbid": "1b1b1b1b-1c1d"
  }
]

Так значит, у меня нет проблем с данными. Может я что-то не так делаю со вторым массивом?

Вот пример структуры JSON:

{
  "resultsPage": {
    "status": "ok",
    "results": {
      "calendarEntry": [
        {
          "reason": {

          },
          "event": {
            "performance": [
              {
                "id": 72641494,
                "displayName": "Arnalds",
                "artist": {
                  "id": 590465,
                  "identifier": [
                    {
                      "mbid": "6655955b-1c1e-4bcb-84e4-81bcd9efab30"
                    },
                    {                   
                      "mbid": "1b1b1b1b-1c1d"
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  }
}

Спасибо за ваше время

1 Ответ

2 голосов
/ 11 ноября 2019
def get_data():
    newJsonx = dict()
    for item in data["resultsPage"]["results"]["calendarEntry"]:
        performance=item["event"]["performance"]
        if performace:
          identifier=performace[0]["artist"]["identifier"]
          if identifier:
            mbid=identifier[0]["mbid"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...