Что Такое Сериализация

Скачать

🔄 Что такое сериализация

Сериализация — это процесс преобразования объекта в формат, который можно сохранить или передать (например, в файл, базу данных или по сети). Обратный процесс называется десериализацией — восстановление объекта из этого формата.


Представим, у тебя есть объект:

var user = new User { Name = "Anton", Age = 18 };

Ты не можешь напрямую передать его через HTTP или сохранить в текстовый файл. Сначала его нужно сериализовать — например, в JSON:

{ "name": "Anton", "age": 18 }

🧰 Зачем нужна сериализация

Задача Пример
📤 Отправка данных по сети JSON в Web API
💾 Сохранение в файл Конфигурации, кэш
🗄️ Хранение в БД BSON, JSON, XML
🔄 Клонирование объектов Через сериализацию в память

🔧 Типы сериализации в .NET

1. ✅ JSON (рекомендуется)

Используется в Web API, REST, фронтенде. Быстрая, удобная, кросс-платформенная.

🔹 Сериализация в JSON

using System.Text.Json;

var user = new User { Name = "Anton", Age = 18 };
string json = JsonSerializer.Serialize(user);
// json = {"Name":"Anton","Age":18}

🔹 Десериализация

var restoredUser = JsonSerializer.Deserialize<User>(json);

Можно использовать и Newtonsoft.Json (популярная библиотека), но в новых проектах рекомендуют System.Text.Json.


2. 🟨 XML

Подходит для интеграции со старыми системами и конфигураций.

var serializer = new XmlSerializer(typeof(User));
using var writer = new StringWriter();
serializer.Serialize(writer, user);

3. 🔒 BinaryFormatter (устарел!)

Раньше использовался для бинарной сериализации:

var formatter = new BinaryFormatter();
formatter.Serialize(stream, user);

⚠️ Не используйте BinaryFormatter — он считается небезопасным.


🧪 Атрибуты сериализации

Ты можешь управлять, какие свойства сериализуются:

public class User
{
    public string Name { get; set; }

    [JsonIgnore]
    public int Age { get; set; }
}

Также можно управлять названиями:

public class User
{
    [JsonPropertyName("user_name")]
    public string Name { get; set; }
}

💡 Примеры использования

Сохранить объект в файл:

File.WriteAllText("user.json", JsonSerializer.Serialize(user));

Прочитать из файла:

var user = JsonSerializer.Deserialize<User>(File.ReadAllText("user.json"));

🧠 Краткий итог

Тип Применение Библиотека
JSON Web API, фронт System.Text.Json, Newtonsoft.Json
XML Конфиги, старые API System.Xml.Serialization
Binary Быстрое хранение, но устарело BinaryFormatter — ❌ не использовать