Serializare și deserializare în C# cu exemplu
⚡ Rezumat inteligent
Serializarea în C# convertește un obiect într-un flux de octeți, astfel încât acesta să poată fi salvat într-un fișier sau trimis între aplicații; deserializarea reconstruiește obiectul. Aici veți învăța cum să serializați și să deserializați obiecte cu exemple.

Serializare și deserializare în C#
Conceptul de serializare și deserializare este utilizat ori de câte ori datele referitoare la obiecte trebuie trimise de la o aplicație la alta. Serializarea este utilizată pentru a exporta datele aplicației într-un fișier. Aplicația destinație folosește apoi deserializarea pentru a...tracdatele din aplicație pentru utilizare ulterioară.
Serializarea este un concept în care obiectele clasei C# sunt scrise sau serializate în fișiere. Să presupunem că ai avut o clasă C# numită Tutorial. Și clasa are 2 proprietăți de ID și nume de tutoriale.
Serializarea poate fi folosită pentru a scrie direct proprietățile de date ale clasei Tutorial într-un fișier. Deserializarea este folosită pentru a citi datele din fișier și pentru a construi din nou obiectul Tutorial.
Tipuri de serializare în C#
C# acceptă mai multe formate de serializare, iar alegerea unuia se face în funcție de locul în care vor fi utilizate datele. Principalele tipuri sunt enumerate mai jos.
- Serializare binară convertește un obiect într-un flux binar compact. Este rapid, dar nu poate fi citit de om și este legat de .NET.
- Serializare XML utilizează clasa XmlSerializer pentru a scrie proprietățile publice ale unui obiect într-un fișier XML lizibil.
- Serializare JSON folosește System.Text.Json sau Newtonsoft.Json pentru a produce JSON ușor, cel mai comun format pentru API-urile web.
- Serializarea SOAP formatează datele ca mesaje SOAP pentru serviciile web mai vechi.
Cum se serializa un obiect în C#
Să ne uităm la un exemplu despre cum putem realiza acest lucru.
În exemplul nostru, vom efectua pașii de mai jos de nivel înalt din cod
- Creați o clasă numită Tutorial care are 2 proprietăți, și anume ID și Name
- Apoi vom crea un obiect din clasă și vom atribui o valoare „1” proprietății ID și o valoare „.Net” proprietății nume.
- Vom folosi apoi serializarea pentru a serializa obiectul de mai sus într-un fișier numit Example.txt
- În cele din urmă, vom folosi deserializarea pentru a deserializa obiectul din fișier și pentru a afișa valorile în Consolă.
Introduceți codul de mai jos în fișierul program.cs al aplicației de consolă.
Pas 1) Adăugați clasa.
Primul pas este să adăugați clasa care va fi folosită pentru serializare
Code Explicaţie:-
- Clasa care trebuie serializată trebuie să aibă atributul [Serializable]. Acesta este un cuvânt cheie în C#. Acest cuvânt cheie este apoi atașat la clasa Tutorial. Dacă nu menționați acest atribut, veți primi o eroare când încercați să serializați clasa.
- Urmează definiția clasei care va fi serializată. Aici definim o clasă numită „Tutorial” și oferim 2 proprietăți, una este „ID” și cealaltă este „Nume”.
Pas 2) Creați obiectul.
În acest pas, mai întâi vom crea obiectul clasei Tutorial și îl vom serializa în fișierul numit Example.txt
Code Explicaţie:-
- Mai întâi, creăm un obiect al clasei Tutorial. Apoi atribuim valoarea „1” ID-ului și „.net” proprietății nume.
- Apoi folosim clasa de formatare care este folosită pentru a serializa sau a converti obiectul într-un format binar. Datele din fișierul în serializare se fac în format binar. Apoi, creăm un obiect flux de fișiere. Obiectul flux de fișiere este folosit pentru a deschide fișierul Example.txt în scopuri de scriere. Cuvintele cheie FileMode.Create și FileMode.Write sunt folosite pentru a menționa în mod specific faptul că fișierul trebuie deschis în scopuri de scriere.
- În cele din urmă, folosim metoda Serialize pentru a transfera datele binare în fișier. Închidem apoi fluxul, de la scriere operaţie este complet.
Pas 3) Utilizați deserializarea.
În cele din urmă, pentru a ne asigura că datele sunt prezente în fișier, folosim deserializarea pentru a deserializa obiectul din fișier.
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 Explicaţie:-
- Creăm obiectul „curent” pentru a deschide fișierul Example.txt în modul numai pentru citire.
- Apoi folosim clasa de formatare care este folosită pentru a deserializa obiectul, care este stocat în fișierul Example.txt. Obiectul returnat este setat la obiectul objnew.
- În cele din urmă, afișăm proprietățile obiectului „objnew” pe consolă folosind proprietățile „ID” și „name”.
Când codul de mai sus este setat și proiectul este rulat folosind Visual Studio, veți obține rezultatul de mai jos.
Ieșire: -
Puteți vedea din rezultatul de mai sus că valorile din fișier au fost deserializate corect și afișate în consolă.
Serializarea JSON în C#
JSON este formatul cel mai utilizat pentru aplicațiile moderne și API-urile web. Formatul încorporat System.Text.Json namespace-ul serializează și deserializează obiectele cu un singur apel de metodă, așa cum se arată mai jos.
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(); } } }
ieșire:
{"ID":1,"Name":".Net"}
.Net




