Выбор ответа Junior Стандартная библиотека обновлено

Кириллица в json.dumps

Вопрос

Почему json.dumps({"name": "Аня"}) выдаёт {"name": "\u0410\u043d\u044f"} и как получить читаемый текст?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Мешает ensureascii=True, нужно ensureascii=False. Оба варианта валидный JSON, но по умолчанию json.dumps экранирует всё, что вне ASCII.

Варианты ответа

  1. Нужно передать encoding="utf-8" в json.dumps
  2. json не поддерживает кириллицу, только ASCII
  3. Нужно вызвать .decode("unicode_escape") у результата
  4. Мешает ensure_ascii=True, нужно ensure_ascii=Falseправильный ответ

Разбор

Оба варианта валидный JSON, но по умолчанию json.dumps экранирует всё, что вне ASCII. С ensure_ascii=False строка останется читаемой, а при записи в файл важно открыть его с encoding="utf-8". Параметра encoding у dumps в Python 3 нет, а результат уже строка, не bytes.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.