Ответ
Сериализация — это процесс преобразования сложных структур данных (например, объектов или моделей в памяти) в формат, пригодный для хранения или передачи по сети (например, в строку JSON, XML или поток байтов). Обратный процесс называется десериализацией.
Ключевые задачи, которые решает сериализация:
- Передача данных по сети: Объекты преобразуются в текст (JSON) или байты для отправки через API-запросы между клиентом и сервером или между микросервисами.
- Сохранение состояния (Persistence): Позволяет сохранять состояние объектов в файлы, кэш (Redis) или базы данных для последующего восстановления.
- Межплатформенное взаимодействие: Стандартные форматы вроде JSON и XML являются языково-независимыми, что позволяет системам, написанным на разных языках, обмениваться данными.
Современные фреймворки (например, Django REST Framework, FastAPI, Pydantic) используют сериализаторы не только для преобразования данных, но и для:
- Валидации: Проверки входящих данных на соответствие типам, форматам и бизнес-правилам.
- Преобразования типов: Автоматического приведения строковых данных из запроса к нужным типам (int, datetime и т.д.).
Пример с Pydantic:
from pydantic import BaseModel, ValidationError
# Определяем "схему" данных с помощью класса-сериализатора
class User(BaseModel):
id: int
name: str
is_active: bool = True
# 1. Десериализация и валидация входящих данных (JSON -> Объект)
json_data = '{"id": 123, "name": "Alice"}'
try:
user_obj = User.parse_raw(json_data)
print(f"Объект создан: {user_obj}")
except ValidationError as e:
print(e)
# 2. Сериализация (Объект -> JSON)
json_output = user_obj.json()
print(f"Объект сериализован в JSON: {json_output}")