JSON в Python: false → False, null → None

JSON в Python: false → False, null → None

@python_quiz

Разберем этот квиз

Коротко о задаче: в коде JSON-строка парсится модулем json в Python, а затем печатаются значение поля, его тип и проверка на None. Покажем, что получится и почему.

Исходный код

python

Ожидаемый вывод и объяснение

При выполнении этого кода будет напечатано:

Почему так:

  • JSON значение false преобразуется в Python-объект False (логический тип bool).
  • JSON значение null преобразуется в Python-объект None.
  • При выводе Python булевы значения печатаются как True или False.
  • Оператор is сравнивает тождественность; data['name'] is None возвращает True, потому что значение действительно None.

Дополнительное замечание по типам: bool в Python — это подкласс int, но при вызове type() результат — <class 'bool'>, а не <class 'int'>.

Анализ вариантов ответов

  • Вариант, где содержится False <class 'bool'> True — полностью совпадает с выводом кода: булевое значение, его тип и проверка на None.
  • Вариант с false <class 'str'> False неверен, потому что строка "false" не образуется при парсинге JSON (json.loads превращает false в булево значение, а не в строку).
  • Вариант с 0 <class 'int'> True неверен: false не превращается в 0 при парсинге JSON (хотя bool наследуется от int, но json.loads возвращает bool, и печать даст False, а не 0).
  • Вариант с ошибкой при парсинге JSON тоже неверен: значение false в корректном JSON допустимо и json.loads его корректно обрабатывает.

Выводы и рекомендации

  • При работе с JSON в Python помните простые соответствия: trueTrue, falseFalse, nullNone.
  • Для проверки на пустое/null-значение используйте is None, а не сравнение == None.
  • Если нужно строгие типы или кастинги после парсинга — выполняйте явное приведение, учитывая, что булевы значения — это отдельный тип <class 'bool'>.

Report Page