Задать вопрос
@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 )
  • Вопрос задан
  • 172 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
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}")


# Имя: Иван, фамилия: Иванов, отчество: Иванович
# Имя: Петр, фамилия: Петров, отчество: отчество отсутствует
Ответ написан
Комментировать
@Everything_is_bad
Ну так сначала проверяй наличие поля, а потом только доставай, а не наоборот, хотя метод get позволяет это совместить. И зачем ты еще к str приводишь?
Ответ написан
Комментировать
Maksim_64
@Maksim_64
Data Analyst
Объекты типа str не имеют метода get, такие методы характерны для маппингов (ключ-значение) напрмиер словарь.
get("MiddleName") нужно проверять в другом месте, где ты ожидаешь встретить данный ключ.
Ответ написан
Комментировать
@dilmah949
Разработчик на Python, backend
js = {"Employees": [
        {
            "User": {
                "UserId": "000",
                "Login": "example@example.ru",
                "FullName": {
                    "LastName": "Иванов",
                    "FirstName": "Иван",
                },
                "Registered": True
        }
        }
        ]
    }
result = js.get("Employees")[0].get("User").get("FullName").get("MiddleName", "Отчество отсутствует")
print(result)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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