Serialisierung und Deserialisierung in C# mit Beispiel
⚡ Intelligente Zusammenfassung
Die Serialisierung in C# wandelt ein Objekt in einen Byte-Stream um, sodass es in einer Datei gespeichert oder zwischen Anwendungen übertragen werden kann; die Deserialisierung stellt das Objekt wieder her. Hier lernen Sie anhand von Beispielen, wie man Objekte serialisiert und deserialisiert.

Serialisierung und Deserialisierung in C#
Das Konzept der Serialisierung und Deserialisierung kommt immer dann zum Einsatz, wenn Daten, die sich auf Objekte beziehen, von einer Anwendung an eine andere übertragen werden müssen. Die Serialisierung dient dazu, Anwendungsdaten in eine Datei zu exportieren. Die Zielanwendung verwendet dann die Deserialisierung, um die Daten zu exportieren.tracDie Daten aus der Anwendung werden zur weiteren Verwendung gespeichert.
Serialisierung ist ein Konzept, bei dem C#-Klassenobjekte in Dateien geschrieben oder serialisiert werden. Nehmen wir an, Sie hätten eine C#-Klasse namens Tutorial. Und die Klasse hat zwei Eigenschaften: ID und Tutorials-Name.
Mithilfe der Serialisierung können die Dateneigenschaften der Tutorial-Klasse direkt in eine Datei geschrieben werden. Mithilfe der Deserialisierung werden die Daten aus der Datei gelesen und das Tutorial-Objekt erneut erstellt.
Serialisierungstypen in C#
C# unterstützt verschiedene Serialisierungsformate. Die Auswahl des Formats hängt davon ab, wofür die Daten verwendet werden. Die wichtigsten Formate sind unten aufgeführt.
- Binäre Serialisierung Konvertiert ein Objekt in einen kompakten Binärstrom. Es ist schnell, aber nicht lesbar und an .NET gebunden.
- XML-Serialisierung verwendet die XmlSerializer-Klasse, um die öffentlichen Eigenschaften eines Objekts in eine lesbare XML-Datei zu schreiben.
- JSON-Serialisierung verwendet System.Text.Json oder Newtonsoft.Json, um leichtgewichtiges JSON zu erzeugen, das gebräuchlichste Format für Web-APIs.
- SOAP-Serialisierung Formatiert Daten als SOAP-Nachrichten für ältere Webdienste.
So serialisieren Sie ein Objekt in C#
Schauen wir uns ein Beispiel an, wie wir dies erreichen können.
In unserem Beispiel führen wir die folgenden allgemeinen Schritte im Code aus
- Erstellen Sie eine Klasse namens Tutorial, die über zwei Eigenschaften verfügt, nämlich ID und Name
- Anschließend erstellen wir ein Objekt aus der Klasse und weisen der ID-Eigenschaft den Wert „1“ und der Namenseigenschaft den Wert „.Net“ zu.
- Anschließend verwenden wir die Serialisierung, um das obige Objekt in eine Datei namens „Example.txt“ zu serialisieren
- Schließlich werden wir die Deserialisierung verwenden, um das Objekt aus der Datei zu deserialisieren und die Werte in der Konsole anzuzeigen.
Geben Sie den folgenden Code in die Datei program.cs der Konsolenanwendung ein.
Schritt 1) Fügen Sie die Klasse hinzu.
Der erste Schritt besteht darin, die Klasse hinzuzufügen, die für die Serialisierung verwendet wird
Code Erläuterung:-
- Die Klasse, die serialisiert werden muss, muss über das Attribut [Serializable] verfügen. Dies ist ein Schlüsselwort in C#. Dieses Schlüsselwort wird dann an die Tutorial-Klasse angehängt. Wenn Sie dieses Attribut nicht erwähnen, erhalten Sie beim Versuch, die Klasse zu serialisieren, eine Fehlermeldung.
- Als nächstes folgt die Definition der Klasse, die serialisiert werden soll. Hier definieren wir eine Klasse namens „Tutorial“ und stellen zwei Eigenschaften bereit, eine ist „ID“ und die andere ist „Name“.
Schritt 2) Erstellen Sie das Objekt.
In diesem Schritt erstellen wir zunächst das Objekt der Tutorial-Klasse und serialisieren es in die Datei „Example.txt“.
Code Erläuterung:-
- Zuerst erstellen wir ein Objekt der Tutorial-Klasse. Anschließend weisen wir der ID den Wert „1“ und der Namenseigenschaft „.net“ zu.
- Anschließend verwenden wir die Formatierungsklasse, mit der das Objekt serialisiert oder in ein Binärformat konvertiert wird. Die Daten in der Datei bei der Serialisierung erfolgen im Binärformat. Als nächstes erstellen wir ein Dateistreamobjekt. Das Dateistream-Objekt wird verwendet, um die Datei „Example.txt“ zu Schreibzwecken zu öffnen. Die Schlüsselwörter FileMode.Create und FileMode.Write werden verwendet, um ausdrücklich darauf hinzuweisen, dass die Datei zum Schreiben geöffnet werden soll.
- Abschließend verwenden wir die Methode Serialize, um die Binärdaten in die Datei zu übertragen. Wir schließen dann den Stream, seit dem Schreiben Betrieb ist komplett.
Schritt 3) Verwenden Sie Deserialisierung.
Um schließlich sicherzustellen, dass die Daten in der Datei vorhanden sind, deserialisieren wir das Objekt mithilfe der Deserialisierung aus der Datei.
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 Erläuterung:-
- Wir erstellen das Objekt „Strom” um die Datei Beispiel.txt im schreibgeschützten Modus zu öffnen.
- Anschließend verwenden wir die Formatierungsklasse, die zum Deserialisieren des Objekts verwendet wird, das in der Datei „Example.txt“ gespeichert ist. Das zurückgegebene Objekt wird auf das Objekt objnew gesetzt.
- Abschließend zeigen wir der Konsole die Eigenschaften des Objekts „objnew“ mithilfe der Eigenschaften „ID“ und „name“ an.
Wenn der obige Code festgelegt ist und das Projekt mit ausgeführt wird Visual Studio, erhalten Sie die folgende Ausgabe.
Ausgabe:-
Sie können der obigen Ausgabe entnehmen, dass die Werte aus der Datei ordnungsgemäß deserialisiert und in der Konsole angezeigt wurden.
JSON-Serialisierung in C#
JSON ist das am weitesten verbreitete Format für moderne Anwendungen und Web-APIs. System.Text.Json Der Namespace serialisiert und deserialisiert Objekte mit einem einzigen Methodenaufruf, wie unten gezeigt.
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(); } } }
Ausgang:
{"ID":1,"Name":".Net"}
.Net




