Серіалізація та десеріалізація в C# з прикладом
⚡ Розумний підсумок
Серіалізація в C# перетворює об'єкт на потік байтів, щоб його можна було зберегти у файл або надіслати між програмами; десеріалізація перебудовує об'єкт. Тут ви навчитеся серіалізувати та десеріалізувати об'єкти на прикладах.

Серіалізація та десеріалізація в C#
Концепція серіалізації та десеріалізації використовується щоразу, коли дані, що стосуються об'єктів, потрібно надсилати з однієї програми до іншої. Серіалізація використовується для експорту даних програми у файл. Потім цільова програма використовує десеріалізацію для...tracдані з програми для подальшого використання.
Серіалізація — це концепція, за якої об’єкти класу C# записуються або серіалізуються у файли. Припустімо, у вас є клас C# під назвою Tutorial. І клас має 2 властивості ID та назву Tutorials.
Серіалізацію можна використовувати для безпосереднього запису властивостей даних класу 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» властивості name.
- Потім ми використаємо серіалізацію, щоб серіалізувати вищевказаний об’єкт у файл під назвою Example.txt
- Нарешті, ми використаємо десеріалізацію для десеріалізації об’єкта з файлу та відображення значень у консолі.
Введіть наведений нижче код у файл program.cs консольної програми.
Крок 1) Додайте клас.
Першим кроком є додавання класу, який буде використовуватися для серіалізації
Code Пояснення:
- Клас, який потрібно серіалізувати, повинен мати атрибут [Serializable]. Це ключове слово в C#. Потім це ключове слово додається до класу Tutorial. Якщо ви не вкажете цей атрибут, ви отримаєте помилку під час спроби серіалізувати клас.
- Далі йде визначення класу, який буде серіалізовано. Тут ми визначаємо клас під назвою «Навчальний посібник» і надаємо 2 властивості, одна — «ID», а інша — «Name».
Крок 2) Створіть об'єкт.
На цьому кроці спочатку ми створимо об’єкт класу Tutorial і серіалізуємо його у файл під назвою Example.txt
Code Пояснення:
- Спочатку ми створюємо об’єкт класу Tutorial. Потім ми призначаємо значення «1» ID і «.net» властивості name.
- Потім ми використовуємо клас formatter, який використовується для серіалізації або перетворення об’єкта в двійковий формат. Дані у файлі під час серіалізації виконуються у двійковому форматі. Далі ми створюємо об’єкт файлового потоку. Об’єкт файлового потоку використовується для відкриття файлу 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 Пояснення:
- Створюємо об'єкт "потік”, щоб відкрити файл Example.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




