Существует распространенная проблема, которая возникает при работе с функцией json.dumps()
в Python. Эта функция преобразует объект Python в строку JSON. Однако, при попытке сериализации строк, содержащих не-ASCII символы, функция json.dumps()
по умолчанию преобразует их в escape-последовательности вида \uXXXX
.
Это могут быть, например, символы кириллицы или иероглифы. Представим, что у нас есть следующий код:
import json json_string = json.dumps("Привет, мир!") print(json_string)
Вывод будет следующим:
"\u041f\u0440\u0438\u0432\u0435\u0442, \u043c\u0438\u0440!"
Это некрасиво и неудобно для чтения человеком. Вместо ожидаемого «Привет, мир!» мы получаем набор escape-последовательностей.
Решение проблемы
Существует простое решение этой проблемы. Функция json.dumps()
имеет параметр ensure_ascii
, который по умолчанию установлен в True
. Именно это приводит к преобразованию не-ASCII символов в escape-последовательности. Если установить этот параметр в False
, то функция json.dumps()
будет сохранять все символы в исходном виде.
Вот как выглядит код с установкой ensure_ascii=False
:
import json json_string = json.dumps("Привет, мир!", ensure_ascii=False) print(json_string)
Теперь вывод будет выглядеть так, как и ожидалось:
"Привет, мир!"
Таким образом, с помощью параметра ensure_ascii
можно управлять поведением функции json.dumps()
при сериализации не-ASCII символов. Это может быть очень полезно при работе с многоязычными данными или при необходимости сохранения данных в удобочитаемом формате.
Добавить комментарий