Serializzazione e deserializzazione in C# con esempio
⚡ Riepilogo intelligente
In C#, la serializzazione converte un oggetto in un flusso di byte in modo che possa essere salvato in un file o inviato tra applicazioni; la deserializzazione ricostruisce l'oggetto. Qui imparerai a serializzare e deserializzare gli oggetti con degli esempi.

Serializzazione e deserializzazione in C#
Il concetto di serializzazione e deserializzazione viene utilizzato ogni volta che i dati relativi agli oggetti devono essere inviati da un'applicazione all'altra. La serializzazione viene utilizzata per esportare i dati dell'applicazione in un file. L'applicazione di destinazione utilizza quindi la deserializzazione per esportare i dati.tract i dati dall'applicazione per un ulteriore utilizzo.
La serializzazione è un concetto in cui gli oggetti della classe C# vengono scritti o serializzati su file. Supponiamo che tu abbia una classe C# chiamata Tutorial. E la classe ha 2 proprietà di ID e nome Tutorial.
La serializzazione può essere utilizzata per scrivere direttamente le proprietà dei dati della classe Tutorial in un file. La deserializzazione viene utilizzata per leggere i dati dal file e costruire nuovamente l'oggetto Tutorial.
Tipi di serializzazione in C#
C# supporta diversi formati di serializzazione, e la scelta dipende da dove verranno utilizzati i dati. I tipi principali sono elencati di seguito.
- Serializzazione binaria Converte un oggetto in un flusso binario compatto. È veloce ma non leggibile dall'uomo ed è legato a .NET.
- serializzazione XML Utilizza la classe XmlSerializer per scrivere le proprietà pubbliche di un oggetto in un file XML leggibile.
- Serializzazione JSON Utilizza System.Text.Json o Newtonsoft.Json per produrre JSON leggero, il formato più comune per le API web.
- serializzazione SOAP formatta i dati come messaggi SOAP per i servizi web meno recenti.
Come serializzare un oggetto in C#
Diamo un'occhiata a un esempio di come possiamo raggiungere questo obiettivo.
Nel nostro esempio, eseguiremo i passaggi di alto livello nel codice riportati di seguito
- Crea una classe chiamata Tutorial che ha 2 proprietà, ovvero ID e Nome
- Creeremo quindi un oggetto dalla classe e assegneremo un valore "1" alla proprietà ID e un valore ".Net" alla proprietà name.
- Utilizzeremo quindi la serializzazione per serializzare l'oggetto sopra in un file chiamato Esempio.txt
- Infine, utilizzeremo la deserializzazione per deserializzare l'oggetto dal file e visualizzare i valori nella Console.
Immettere il codice seguente nel file program.cs dell'applicazione console.
Passo 1) Aggiungi la classe.
Il primo passo è aggiungere la classe che verrà utilizzata per la serializzazione
Code Spiegazione:-
- La classe che deve essere serializzata deve avere l'attributo [Serializable]. Questa è una parola chiave in C#. Questa parola chiave viene quindi allegata alla classe Tutorial. Se non menzioni questo attributo, riceverai un errore quando proverai a serializzare la classe.
- La prossima è la definizione della classe che verrà serializzata. Qui stiamo definendo una classe chiamata "Tutorial" e fornendo 2 proprietà, una è "ID" e l'altra è "Nome".
Passo 2) Crea l'oggetto.
In questo passaggio, per prima cosa creeremo l'oggetto della classe Tutorial e lo serializzeremo nel file chiamato Esempio.txt
Code Spiegazione:-
- Per prima cosa creiamo un oggetto della classe Tutorial. Assegniamo quindi il valore “1” all'ID e “.net” alla proprietà name.
- Utilizziamo quindi la classe formattatore che viene utilizzata per serializzare o convertire l'oggetto in un formato binario. I dati nel file in serializzazione vengono eseguiti in formato binario. Successivamente, creiamo un oggetto flusso di file. L'oggetto flusso di file viene utilizzato per aprire il file Esempio.txt per scopi di scrittura. Le parole chiave FileMode.Create e FileMode.Write vengono utilizzate per menzionare specificamente che il file deve essere aperto per scopi di scrittura.
- Infine, utilizziamo il metodo Serialize per trasferire i dati binari nel file. Chiudiamo quindi lo stream, dal momento della scrittura operazione è completo.
Passo 3) Utilizzare la deserializzazione.
Infine per garantire che i dati siano presenti nel file, utilizziamo la deserializzazione per deserializzare l'oggetto dal file.
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 Spiegazione:-
- Creiamo l’oggetto”ruscello" per aprire il file Esempio.txt in modalità di sola lettura.
- Utilizziamo quindi la classe formattatore utilizzata per deserializzare l'oggetto, che è archiviato nel file Esempio.txt. L'oggetto restituito è impostato sull'oggetto objnew.
- Infine, visualizziamo le proprietà dell'oggetto “objnew” sulla console utilizzando le proprietà “ID” e “name”.
Quando viene impostato il codice precedente e il progetto viene eseguito utilizzando Di Visual Studio, otterrai l'output seguente.
Produzione:-
Dall'output precedente puoi vedere che i valori del file sono stati deserializzati correttamente e visualizzati nella console.
Serializzazione JSON in C#
JSON è il formato più utilizzato per le applicazioni moderne e le API web. Il formato integrato System.Text.Json Lo spazio dei nomi serializza e deserializza gli oggetti con una singola chiamata di metodo, come mostrato di seguito.
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(); } } }
Produzione:
{"ID":1,"Name":".Net"}
.Net




