@vasiliy763
IT engineer

Как проверить наличие поля в JSON файле с помощью python?

Здравствуйте!
Имеется json файл с данными сотрудников, необходимо вывести фамилию, имя и проверить наличие отчества (MiddleName) сотрудника, при ее отсутсвует выводить сообщение "Отчество отсутсвует", а при наличие отчества выводить отчество.
"Employees": [
        {
            "User": {
                "UserId": "000",
                "Login": "example@example.ru",
                "FullName": {
                    "LastName": "Иванов",
                    "FirstName": "Иван"
                },
                "Registered": true
            }
        ]


Для получение информации, пробегаю циклом по всему json файлу, не получается выполнить проверку отчества.
Подскажите пожалуйста, в чем я ошибся.
for item in response.json()['Employees']:
    FirstName = str("Имя: "+item["User"]["FullName"]["FirstName"]+",")  # Время получение документа
    LastName = str("Фамилия: "+item["User"]["FullName"]["LastName"]+",")  # Вывести фамилию сотрудника
    MiddleName = str(item["User"]["FullName"]["MiddleName"])  # Вывести отчество сотрудника
    if MiddleName.get("MiddleName") is None:
        print("Отчество отсутсвует ")
    else:
        print(MiddleName.get("MiddleName"))
print(FirstName,LastName ,MiddleName )
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Everything_is_bad
Ну так сначала проверяй наличие поля, а потом только доставай, а не наоборот, хотя метод get позволяет это совместить. И зачем ты еще к str приводишь?
Ответ написан
Комментировать
Maksim_64
@Maksim_64
Data Analyst
Объекты типа str не имеют метода get, такие методы характерны для маппингов (ключ-значение) напрмиер словарь.
get("MiddleName") нужно проверять в другом месте, где ты ожидаешь встретить данный ключ.
Ответ написан
Комментировать
Mike_Ro
@Mike_Ro Куратор тега Python
Python, JS, WordPress, SEO, Bots, Adversting
Применять метод .get() к строке не лучшее решение, попробуйте так:
for item in response.json()['Employees']:
    first_name = item["User"]["FullName"]["FirstName"]
    last_name = item["User"]["FullName"]["LastName"]
    
    if "MiddleName" in item["User"]["FullName"]:
        middle_name = item["User"]["FullName"]["MiddleName"]
    else:
        middle_name = "отчество отсутствует"
    
    print(f"Имя: {first_name}, фамилия: {last_name}, отчество: {middle_name}")


# Имя: Иван, фамилия: Иванов, отчество: Иванович
# Имя: Петр, фамилия: Петров, отчество: отчество отсутствует
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы