🔄 Что такое сериализация
Сериализация — это процесс преобразования объекта в формат, который можно сохранить или передать (например, в файл, базу данных или по сети). Обратный процесс называется десериализацией — восстановление объекта из этого формата.
Представим, у тебя есть объект:
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 — ❌ не использовать |