Вопрос проверяет понимание процесса преобразования объектов в формат для хранения или передачи и обратно, что необходимо для работы с данными в распределённых системах.
Сериализация и десериализация — это фундаментальные концепции в программировании, связанные с преобразованием данных. Они позволяют сохранять состояние объекта или передавать его между различными частями системы, которые могут работать на разных языках или в разных процессах.
Главная цель — превратить сложные структуры данных (объекты, массивы, графы объектов) в плоскую последовательность байтов или строку. Это необходимо, потому что данные в памяти существуют в специфичном для языка и среды формате, который нельзя напрямую записать в файл или отправить по сети.
JSON — один из самых популярных форматов благодаря своей простоте и поддержке во многих языках.
import json
# Исходный объект Python (словарь)
data = {
"name": "Alice",
"age": 30,
"skills": ["Python", "JavaScript"]
}
# Сериализация: объект -> JSON-строка
json_string = json.dumps(data)
print("Сериализовано:", json_string)
# Вывод: {"name": "Alice", "age": 30, "skills": ["Python", "JavaScript"]}
# Десериализация: JSON-строка -> объект Python
restored_data = json.loads(json_string)
print("Десериализовано, имя:", restored_data["name"]) # AliceВажно помнить о безопасности, особенно при десериализации данных из ненадёжных источников, так как это может привести к выполнению произвольного кода (например, уязвимости в Python pickle).
Вывод: Сериализацию стоит применять всегда, когда нужно сохранить данные вне оперативной памяти или передать их через границы процессов, языков или сетей. Выбор формата (JSON, protobuf и др.) зависит от требований к читаемости, скорости и размеру данных.