Сериализация и десериализация в C# на примере
⚡ Умное резюме
Сериализация в C# преобразует объект в поток байтов, чтобы его можно было сохранить в файл или передать между приложениями; десериализация восстанавливает объект. Здесь вы научитесь сериализовать и десериализовать объекты на примерах.

Сериализация и десериализация в C#
Концепция сериализации и десериализации используется всякий раз, когда данные, относящиеся к объектам, необходимо передать из одного приложения в другое. Сериализация используется для экспорта данных приложения в файл. Затем целевое приложение использует десериализацию для экспорта данных.tracданные из приложения для дальнейшего использования.
Сериализация — это концепция, согласно которой объекты классов C# записываются или сериализуются в файлы. Допустим, у вас есть класс C# под названием Tutorial. И у класса есть 2 свойства: идентификатор и имя учебника.
Сериализацию можно использовать для прямой записи свойств данных класса Tutorial в файл. Десериализация используется для чтения данных из файла и повторного создания объекта Tutorial.
Типы сериализации в C#
C# поддерживает несколько форматов сериализации, и вы выбираете один из них в зависимости от того, где будут использоваться данные. Основные типы перечислены ниже.
- Двоичная сериализация Преобразует объект в компактный двоичный поток. Это быстрый, но не удобочитаемый для человека метод, привязанный к .NET.
- XML-сериализация Использует класс XmlSerializer для записи открытых свойств объекта в читаемый XML-файл.
- Сериализация JSON Использует System.Text.Json или Newtonsoft.Json для создания облегченного JSON-формата, наиболее распространенного формата для веб-API.
- сериализация SOAP Форматирует данные в виде SOAP-сообщений для более старых веб-сервисов.
Как сериализовать объект в C#
Давайте посмотрим на примере, как мы можем этого добиться.
В нашем примере мы собираемся выполнить приведенные ниже шаги высокого уровня в коде.
- Создайте класс Tutorial, который имеет 2 свойства: ID и Name.
- Затем мы создадим объект из класса и присвоим значение «1» свойству ID и значение «.Net» свойству имени.
- Затем мы будем использовать сериализацию для сериализации вышеуказанного объекта в файл с именем example.txt.
- Наконец, мы будем использовать десериализацию для десериализации объекта из файла и отображения значений в консоли.
Введите приведенный ниже код в файл program.cs консольного приложения.
Шаг 1) Добавьте класс.
Первый шаг — добавить класс, который будет использоваться для сериализации.
Code Объяснение:-
- Класс, который необходимо сериализовать, должен иметь атрибут [Serializable]. Это ключевое слово в C#. Затем это ключевое слово присоединяется к классу Tutorial. Если вы не упомяните этот атрибут, вы получите сообщение об ошибке при попытке сериализовать класс.
- Далее следует определение класса, который будет сериализован. Здесь мы определяем класс под названием «Tutorial» и предоставляем 2 свойства: одно — «ID», а другое — «Name».
Шаг 2) Создайте объект.
На этом этапе сначала мы создадим объект класса Tutorial и сериализуем его в файл с именем example.txt.
Code Объяснение:-
- Сначала мы создаем объект класса Tutorial. Затем мы присваиваем значение «1» идентификатору и «.net» свойству имени.
- Затем мы используем класс форматтера, который используется для сериализации или преобразования объекта в двоичный формат. Данные в файле при сериализации выполняются в двоичном формате. Далее мы создаем объект файлового потока. Объект файлового потока используется для открытия файла example.txt для записи. Ключевые слова FileMode.Create и FileMode.Write используются, чтобы конкретно указать, что файл следует открыть для записи.
- Наконец, мы используем метод Serialize для передачи двоичных данных в файл. Затем мы закрываем поток, поскольку запись операция завершено.
Шаг 3) Используйте десериализацию.
Наконец, чтобы гарантировать наличие данных в файле, мы используем десериализацию для десериализации объекта из файла.
using System; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; namespace DemoApplication { [Serializable] class Tutorial { public int ID; public String Name; static void Main(string[] args) { Tutorial obj = new Tutorial(); obj.ID = 1; obj.Name = ".Net"; IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Create,FileAccess.Write); formatter.Serialize(stream, obj); stream.Close(); stream = new FileStream(@"E:\ExampleNew.txt",FileMode.Open,FileAccess.Read); Tutorial objnew = (Tutorial)formatter.Deserialize(stream); Console.WriteLine(objnew.ID); Console.WriteLine(objnew.Name); Console.ReadKey(); } } }
Code Объяснение:-
- Создаем объект «поток», чтобы открыть файл Пример.txt в режиме только для чтения.
- Затем мы используем класс форматтера, который используется для десериализации объекта, который хранится в файле example.txt. Возвращаемому объекту присваивается объект objnew.
- Наконец, мы отображаем свойства объекта «objnew» на консоли, используя свойства «ID» и «name».
Когда приведенный выше код установлен и проект запускается с использованием Visual Studio, вы получите результат ниже.
Выход:-
Из приведенного выше вывода видно, что значения из файла были правильно десериализованы и отображены в консоли.
Сериализация JSON в C#
JSON — наиболее широко используемый формат для современных приложений и веб-API. Встроенный System.Text.Json Пространство имен сериализует и десериализует объекты с помощью одного вызова метода, как показано ниже.
using System; using System.Text.Json; namespace DemoApplication { class Tutorial { public int ID { get; set; } public string Name { get; set; } } class Program { static void Main(string[] args) { Tutorial obj = new Tutorial { ID = 1, Name = ".Net" }; string json = JsonSerializer.Serialize(obj); Console.WriteLine(json); Tutorial objnew = (Tutorial)JsonSerializer.Deserialize(json, typeof(Tutorial)); Console.WriteLine(objnew.Name); Console.ReadKey(); } } }
Выход:
{"ID":1,"Name":".Net"}
.Net




