Найти в Дзене
programmer's notes (python and more)

Программирование на языке Python. Стандартная библиотека поддержки формата данных json. Приложение 2

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Статья является приложением 2 к уроку (приложение 1)

Подробнее о некоторых методах модуля json языка Python

Продолжаем рассматривать библиотеку json Python. Остановимся подробнее на методах json.load() и json.dump(). Структура методов loads() и dumps() аналогична. Напомню, что преобразование структуры программы в некоторую последовательность байтов, например текст, называется сериализацией.

json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) — записывает в файл json-представление указанной структуры данных.

  • obj — объект (структура данных) Python;
  • fp — файл в формате json;
  • skipkeys=False — игнорировать неизвестных типов ключей в словарях;
  • ensure_ascii=True — экранировать не-ASCII символов по средством \uXXXX;
  • check_circular=True — проверять циклические ссылки циклических ссылок;
  • allow_nan=True — представлять значений nan, inf, -inf в json;
  • cls=None — указывает на функцию, для преобразования дополнительных типов;
  • indent=None — количество отступов при преобразовании;
  • separators=None — разделители используемые в json;
  • default=None — пользовательская функция для объектов, которые не могут быть преобразованы;
  • sort_keys=False — сортировать словарей на выходе по ключам.

Метод loads(), обратный dumps().

json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw) — преобразовать текстовый файл в json-формате в структуру Python.

  • fp — файл, где содержится json-структура;
  • cls=None — пользовательский подкласс JSONDecoder;
  • object_hook=None — пользовательская функция для преобразования каждого литерала словаря, возвращаемое значение будет подставляться вместо словаря;
  • parse_float=None — пользовательская функция для преобразования литералов, похожих на float;
  • parse_int=None — пользовательская функция для преобразования литералов, похожих на int;
  • parse_constant=None — пользовательская функция для преобразования литералов - Infinity, Infinit и NaN;
  • object_pairs_hook=None — пользовательская функция для преобразования литералов, декодированных упорядоченным списком пар.

Примеры преобразований объектов Python в формат json и обратно были даны в предыдущем приложении. Там же было указано, что не все форматы данных Python имеют аналоги в json. Особых проблем здесь нет. Всегда можно программно видоизменить данные, чтобы можно было легко преобразовать их в формат json. Более того, можно добиться того, чтобы обратное преобразование давало бы тот же результат.

Но есть и специальная возможность. Смотрим программу ниже.

Текст программы см. ниже
Текст программы см. ниже
primer163.py

Содержимое файла

[{"a": 12, "b": 23, "c": 33}, [1, 2, 3], "set:1000,10000,10,100"]

Как видим, множество было преобразовано к строке с префиксом 'set:'. На самом деле во что мы преобразуем тот или иной объект не важно. Важно, чтобы тот, кто будет проводить обратное преобразование, понял какой объект здесь зашифрован. При обратном преобразовании (десериализации) программа должна найти в структуре все строки с префиксом "set:" и преобразовать их в множество.

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

- Позвольте, если скоро искусственный интеллект будет программировать, так зачем этим заниматься. - Чтобы оставаться представителем естественного интеллекта.
- Позвольте, если скоро искусственный интеллект будет программировать, так зачем этим заниматься. - Чтобы оставаться представителем естественного интеллекта.