Быстрое и простое преобразование объектов в JSON и наоборот на Python с помощью библиотеки Dataclasses JSON и пользовательских конвертеров для отдельных атрибутов.

В этом коротком посте я хочу показать вам, как можно использовать пользовательскую сериализацию для преобразования объекта, украшенного декоратором dataclass_json, в формат JSON.

Я столкнулся с этой проблемой, когда работал над приложением, где мне нужно было работать с объектами одного класса, которые потом нужно было хранить в формате json. Поэтому я использовал аннотацию dataclass_json, что делает это очень простым. Но в то же время мне нужно было иметь возможность манипулировать вложенным объектом во время работы с объектом. После преобразования в формат json меня интересовал только тип вложенного объекта, поэтому мне нужно было сохранить только имя его класса. Исходный код ниже показывает это, но преобразование может быть адаптировано к вашему варианту использования.

В приведенном ниже примере есть фиктивный класс данных A, этот класс данных содержит поле obj, которое является объектом и не сериализуемо. Это не имеет значения, пока вы не попытаетесь преобразовать объект (в примере a) класса A в формат JSON. Это может быть легко решено определением пользовательского конвертера. См. вторую половину примера.

Это не показано в примере, но вы можете определить декодер так же, как кодировщик.

Если вы посмотрите на документацию dataclasses_json, там есть еще один пример, но на этот раз он обрабатывает настраиваемое преобразование формата даты и времени.

И вот оно. Спасибо за чтение.

Больше контента на plainenglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку здесь.