Сериализация сложных объектов
Python
Senior
Яндекс
Как вы сериализуете сложные объекты (например, dataclass с `datetime` и `Decimal`) в JSON? Покажите подход с кастомным encoder или с помощью `pydantic`.
Ответы
Сериализация в JSON
Стандартный `json` не умеет сериализовать `datetime`, `Decimal` и произвольные объекты.
Подход 1 — кастомный encoder:
```python
import json
from datetime import datetime
from decimal import Decimal
class MyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
if isinstance(obj, Decimal):
return float(obj)
return super().default(obj)
json.dumps(obj, cls=MyEncoder)
```
Подход 2 — `pydantic`/`pydantic-core`, где сериализация настраивается через конфиг и типы полей.