Spiegare la serializzazione e la deserializzazione in C#

Spiegare la serializzazione e la deserializzazione in C#
Serializzazione si riferisce all'atto di trasformare un oggetto in un formato che può essere trasmesso o archiviato, mentre la deserializzazione è il processo di conversione dei dati serializzati nella sua forma iniziale.

Questo articolo spiegherà serializzazione E deserializzazione In C# con un esempio.

Serializzazione in c#

Per convertire un oggetto in un formato che può essere archiviato o trasmesso su una serializzazione di rete e questo formato può essere un formato XML, un formato binario o qualsiasi altro formato. Serializzazione viene utilizzato per l'archiviazione e la trasmissione dei dati ed è un concetto importante nella programmazione C#.

Facciamo un esempio per capire la serializzazione in C#, supponiamo di avere un "Dipendente" Classe che contiene il nome, l'ID e lo stipendio del dipendente:

usando il sistema;
Utilizzo del sistema.Io;
Utilizzo del sistema.Runtime.Serializzazione;
Utilizzo del sistema.Runtime.Serializzazione.JSON;
[DataContract]
dipendente di classe pubblica

[DataMember]
Nome della stringa pubblica get; impostato;
[DataMember]
public int id get; impostato;
[DataMember]
doppio stipendio pubblico get; impostato;

Programma di classe

statico void main (string [] args)

Emp Emp = new Employee name = "mark", id = 005, stipendio = 10000;
DataContractSerializer Serializer = new DataContractSerializer (typeof (dipendente));
Utilizzo (MemoryStream Stream = new MemoryStream ())

serializzatore.Writebject (stream, emp);
byte [] serializedData = Stream.Toarray ();
Console.WriteLine ("Dati serializzati:");
Console.WriteLine (bitConverter.ToString (SerializedData).Sostituire("-", ""));
// Scrivi i dati serializzati in un file utilizzando FileStream
String filename = "Data serializzata.bidone";
String FilePath = Path.Combina (ambiente.CurrentDirectory, nome file);
Utilizzando (FileStreamFelleam = new FileStream (FilePath, FileMode.Creare))

FileStream.Scrivi (SerializedData, 0, SerializedData.Lunghezza);

Console.WriteLine ($ "Dati serializzati salvati nel file: FilePath");


Il codice C# sopra mostra come serializzare un oggetto di una classe personalizzata denominata "Dipendente" usando il DataContractSerializer classe dal Sistema.Runtime.Serializzazione spazio dei nomi. La classe ha tre proprietà: nome, id e stipendio, tutte contrassegnate con il Datamember attributo per indicare che dovrebbero essere inclusi nel processo di serializzazione.

In main, un'istanza del Dipendente viene creata la classe e le sue proprietà sono impostate con i dati di esempio e DataContractSerializer viene quindi utilizzato per serializzare l'oggetto in un array di byte, che viene salvato in un file usando un filestream. Il percorso del file è specificato usando il Sentiero.Combina E Ambiente.CurrentDirectory () Funzioni e quindi i dati serializzati vengono visualizzati nella console insieme al percorso del file:

Deserializzazione in c#

Deserializzazione è il processo di conversione dei dati serializzati, in genere archiviati in un file, o trasmesso su una rete, di nuovo nella sua forma originale. In C#, il processo di deserializzazione implica la creazione di un oggetto dalla sua forma serializzata, che può essere raggiunta utilizzando varie classi integrate come DataContractSerializer o il Xmlserializer.

Facciamo un esempio per comprendere la deserializzazione in C# e utilizzare lo stesso file serializzato che abbiamo creato in precedenza e deserializzarlo, di seguito è il codice:

usando il sistema;
Utilizzo del sistema.Io;
Utilizzo del sistema.Runtime.Serializzazione;
Utilizzo del sistema.Runtime.Serializzazione.JSON;
[DataContract]
dipendente di classe pubblica

[DataMember]
Nome della stringa pubblica get; impostato;
[DataMember]
public int id get; impostato;
[DataMember]
doppio stipendio pubblico get; impostato;

Programma di classe

statico void main (string [] args)

DataContractSerializer Serializer = new DataContractSerializer (typeof (dipendente));
// Leggi i dati serializzati dal file utilizzando FileStream
String filename = "Data serializzata.bidone";
String FilePath = Path.Combina (ambiente.CurrentDirectory, nome file);
Utilizzando (FileStreamReadStream = new FileStream (FilePath, FileMode.Aprire))

Serializzatore (dipendente).ReadObject (readstream);
Console.WriteLine ($ "Deserialized Employee: Name - Deserializzatemp.Nome, id - Deserializemp.Id, stipendio - Deserializemp.Stipendio");


Il codice C# sopra utilizza il DataContractSerializer classe per deserializzare un oggetto "dipendente" che è stato precedentemente serializzato e salvato in un file binario. La classe dei dipendenti è definita con Datamember attributi sulle sue proprietà per indicare che questi dovrebbero essere serializzati/deserializzati. La principale crea un'istanza del serializzatore e apre il file binario utilizzando un fileStream e la funzione readObject () del serializzatore viene quindi utilizzata per leggere i dati serializzati e creare un nuovo oggetto dipendente. L'oggetto dipendente viene quindi stampato sulla console per confermare che è stato deserializzato con successo.

Pensieri finali

Nella programmazione C#, serializzazione E deserializzazione sono concetti vitali utilizzati per l'archiviazione e la trasmissione dei dati. Serializzazione implica la trasformazione di un oggetto in un formato adatto per la conservazione o la trasmissione, mentre deserializzazione implica il processo inverso di conversione dei dati serializzati nella sua forma originale. Nell'esempio del codice fornito, il DataContractSerializer La classe viene utilizzata per serializzare un'istanza della classe dei dipendenti in un array di byte, che viene quindi salvato in un file. IL deserializzazione Il processo prevede la lettura dei dati serializzati dal file e l'utilizzo dello stesso serializzatore per deserializzarli in un'istanza della classe dei dipendenti.