Фильтр JSON с нулевым возвратом POST-запроса в API - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть сценарий python, который подключается к API-интерфейсу graphql и отправляет POST, поэтому мне возвращается JSON, этот API принадлежит kanban, где у него есть карты, упорядоченные по рабочему процессу, моя проблема и я Я имею 152 карты, и этот запрос я возвращаю 143, потому что некоторые карты не назначены людям, существуют только в рабочем процессе. Это генерирует ошибку индекса для так называемого 'assignees': row ['assignees'][0]['fullname'], я поместил try/except с индексным фильтром и заставил его снова добавить эту строку в словарь, давая полное имя Null, однако это, похоже, не удалось, потому что общее количество карточек 153, а не 143. Есть ли более элегантный способ сделать эту инженерию данных?

py:

    dataDict = {}
    for row in ModelData:

        try:

            dataDict.update(
            { row["identifier"]: 
            {'title' : row["title"], 
            'description' : row["description"], 
            'assignees' : row['assignees'][0]['fullname'], 
            'createdAt' : row["createdAt"]}})

        except IndexError as e:

            dataDict.update(
            { row["identifier"]:
            {'title' : row["title"], 
            'description' : row["description"], 
            'assignees' : "", 
            'createdAt' : row["createdAt"]}})
            pass

пример данных:

{
"identifier": "x5g",
"title": "card name",
"description": "hello world",
"assignees": {"fullname": "John"},
"createdAt": "2020-04-04"
}

Что порождает ошибку ::

{
"identifier": "x6g",
"title": "card name 2",
"description": "hello world",
"assignees": {"fullname": ""},
"createdAt": "2020-04-04"
}

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете сделать это с помощью оператора if:


dataDict.update(
  { 
    row["identifier"]: {
      'title' : row["title"], 
      'description' : row["description"], 
      'assignees' : row['assignees'][0]['fullname'] if 'assignees' in row else "", 
      'createdAt' : row["createdAt"]
    }
  })

I dont know what the data you get looks like without the assignees but I think you get the Idea.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...