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.

  • 🔄 Was es ist: Die Serialisierung schreibt ein C#-Objekt in eine Datei, die Deserialisierung liest es wieder ein.
  • 🏷️ [Serialisierbar]: Eine Klasse benötigt das Attribut [Serializable], bevor sie serialisiert werden kann.
  • 💾 Binärformat: Der BinaryFormatter mit einem FileStream schreibt das Objekt in Binärform.
  • 🧩 Formate: C# unterstützt außerdem die Serialisierung von XML und JSON für lesbare Ausgaben.
  • 🤖 KI-Hilfe: KI-Tools wie GitHub Copilot generieren Serialisierungscode sofort.

C# Serialisierung und Deserialisierung

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

  1. Erstellen Sie eine Klasse namens Tutorial, die über zwei Eigenschaften verfügt, nämlich ID und Name
  2. Anschließend erstellen wir ein Objekt aus der Klasse und weisen der ID-Eigenschaft den Wert „1“ und der Namenseigenschaft den Wert „.Net“ zu.
  3. Anschließend verwenden wir die Serialisierung, um das obige Objekt in eine Datei namens „Example.txt“ zu serialisieren
  4. 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

Serialisieren Sie ein Objekt in C#

Code Erläuterung:-

  1. 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.
  2. 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“.

Serialisieren Sie ein Objekt in C#

Code Erläuterung:-

  1. Zuerst erstellen wir ein Objekt der Tutorial-Klasse. Anschließend weisen wir der ID den Wert „1“ und der Namenseigenschaft „.net“ zu.
  2. 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.
  3. 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.

Serialisieren Sie ein Objekt in C#

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:-

  1. Wir erstellen das Objekt „Strom” um die Datei Beispiel.txt im schreibgeschützten Modus zu öffnen.
  2. 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.
  3. 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:-

Serialisieren Sie ein Objekt in C#

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

Häufig gestellte Fragen

Die Serialisierung wandelt ein C#-Objekt in einen Byte-Stream (binär, XML oder JSON) um, sodass es in einer Datei gespeichert oder an eine andere Anwendung gesendet werden kann. Die Deserialisierung stellt das Objekt aus diesen Daten wieder her.

Das Attribut [Serializable] kennzeichnet eine Klasse so, dass ihre Objekte serialisiert werden können. Ohne dieses Attribut löst die binäre Serialisierung eine Ausnahme aus, wenn versucht wird, das Objekt in eine Datei zu schreiben.

C# unterstützt Binärserialisierung (kompakt, nur .NET), XML-Serialisierung über XmlSerializer, JSON-Serialisierung über System.Text.Json und SOAP-Serialisierung für ältere Webdienste.

Bei der Serialisierung werden die Daten eines Objekts in eine Datei oder einen Datenstrom geschrieben, während bei der Deserialisierung diese Daten wieder gelesen und das ursprüngliche Objekt im Speicher wiederhergestellt werden.

BinaryFormatter ist mittlerweile veraltet und gilt als unsicher, da er während der Deserialisierung schädlichen Code ausführen kann. Microsoft Für neue Anwendungen wird System.Text.Json oder XmlSerializer empfohlen.

KI-Assistenten wie GitHub Copilot vervollständigen Serialize- und Deserialize-Aufrufe automatisch, fügen das Attribut [Serializable] hinzu und generieren aus einem kurzen Kommentar JSON- oder XML-Serialisierungscode.

Ja. KI-gestützte Tools generieren Modellklassen, wählen zwischen JSON-, XML- und Binärformaten und fügen eine Fehlerbehandlung hinzu, sodass Ihr Serialisierungscode sicher und vollständig ist.

Für die binäre Serialisierung wird System.Runtime.Serialization.Formatters.Binary verwendet, für JSON System.Text.Json und für XML System.Xml.Serialization.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: