Heim  >  Artikel  >  Backend-Entwicklung  >  Deserialisierung in C#

Deserialisierung in C#

王林
王林Original
2024-09-03 15:25:14481Durchsuche

Der folgende Artikel bietet einen Überblick über die Deserialisierung in C#. Schauen wir uns zunächst den Prozess der Serialisierung an. Bei der Serialisierung wird ein Objekt in eine Form umgewandelt, sodass es in einen Stream geschrieben und im Speicher, in einer Datenbank oder in einer Datei gespeichert werden kann. Sein Hauptzweck besteht darin, den Zustand des Objekts zu speichern.

Deserialisierung ist das Gegenteil der Serialisierung. Dabei handelt es sich um den Vorgang des Lesens oder Zurückkonvertierens des Bytestroms in das Objekt, damit es in den Speicher geladen werden kann. Dieser Prozess ermöglicht es uns, ein Objekt bei Bedarf zu rekonstruieren.

Syntax mit Erklärung:

Die Syntax für die Deserialisierung mit BinaryFormatter lautet wie folgt:

FileStream fileStream = new FileStream(filePath, FileMode.Open);
BinaryFormatter binaryFormatter = new BinaryFormatter();
ClassName objectName = (ClassName)binaryformatter.Deserialize(fileStream);

In der obigen Syntax haben wir zunächst ein Objekt von FileStream (fileStream) erstellt, indem wir den Pfad der Datei (filePath) angegeben haben, von dem wir die Informationen zur Rekonstruktion des Objekts erhalten. Danach haben wir ein Objekt von BinaryFormatter erstellt. BinaryFormatter ist eine Klasse im System.Runtime.Serialization.Formatters.Binary-Namespace und wird zum Serialisieren und Deserialisieren eines Objekts verwendet. Anschließend haben wir das Objekt mithilfe der Deserialize()-Methode von BinaryFormatter deserialisiert, die ein FileStream-Objekt als Eingabe verwendet und ein Objekt zurückgibt, das wir in das Objekt vom Typ ClassName konvertiert und dann in objectName gespeichert haben.

Wie funktioniert Deserialisierung in C#?

Für die Deserialisierung in C# müssen wir zunächst den System.IO-Namespace in unseren Code importieren, um die Datei mit Daten zu öffnen, die zur Rekonstruktion des Objekts verwendet werden. Dann müssen wir den System.Runtime.Serialization.Formatters.Binary-Namespace importieren, um mit der BinaryFormatter-Klasse zu arbeiten, die für die Serialisierung und Deserialisierung des Objekts verantwortlich ist.

Nehmen wir an, wir haben eine Klasse namens „Student“ mit zwei Eigenschaften, nämlich „Name“ und „RollNo“. Wir werden die Dateneigenschaften der Klasse „Student“ mithilfe des Serialisierungsprozesses in eine Datei schreiben. Durch Aufrufen der Deserialize()-Methode der BinaryFormatter-Klasse können wir dann Daten aus dieser Datei lesen und das Objekt der Klasse „Student“ rekonstruieren, was wir Deserialisierung des Objekts nennen.

Die Schritte zum Deserialisieren eines Objekts in C# mithilfe von BinaryFormatter lauten wie folgt:

  • Zuerst müssen wir ein Stream-Objekt erstellen, um die serialisierten Informationen oder Daten zu lesen.
  • Dann erstellen wir ein Objekt der Klasse BinaryFormatter.
  • Danach rufen wir die Deserialize()-Methode der BinaryFormatter-Klasse auf, um das Objekt zu deserialisieren. Diese Methode gibt ein Objekt zurück, das wir in den entsprechenden Typ umwandeln können.

In C# gibt es drei Arten der Serialisierung:

  • Binäre Serialisierung
  • XML-Serialisierung
  • JSON-Serialisierung

Je nach durchgeführter Serialisierung können wir Objekte auf drei Arten deserialisieren. Für die binäre Serialisierung und Deserialisierung verwenden wir die BinaryFormatter-Klasse wie oben beschrieben; Für die XML-Serialisierung und -Deserialisierung verwenden wir die XMLSerializer-Klasse. und für die JSON-Serialisierung und -Deserialisierung verwenden wir die JsonSerializer-Klasse.

Bildliche Darstellung der Serialisierung und Deserialisierung in C#:

 

Deserialisierung in C#

Beispiele für Deserialisierung in C#

Im Folgenden finden Sie Beispiele:

Beispiel #1

Beispiel für binäre Serialisierung und Deserialisierung.

Code:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApp4
{
class Program
{
public static void SerializingData()
{
string str = "Hello world!";
FileStream fileStream = new FileStream(@"E:\Content\content.txt",
FileMode.Create);
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(fileStream, str);
fileStream.Close();
}
public static void DeserializingData()
{
FileStream fileStream = new FileStream(@"E:\Content\content.txt",
FileMode.Open);
BinaryFormatter binaryFormatter = new BinaryFormatter();
string content = "";
content = (string)binaryFormatter.Deserialize(fileStream);
fileStream.Close();
Console.WriteLine("Deserialized data: ");
Console.WriteLine(content);
}
static void Main(string[] args)
{
SerializingData();
DeserializingData();
Console.ReadLine();
}
}
}<strong> </strong>

Ausgabe:

Deserialisierung in C#

Beispiel #2

Beispiel, das die binäre Serialisierung und Deserialisierung einer benutzerdefinierten Klasse zeigt.

Code:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace ConsoleApp4
{
[Serializable]
public class Student
{
public int RollNo;
public string Name;
public string Address;
public Student(int rollNo, string name, string address)
{
RollNo = rollNo;
Name = name;
Address = address;
}
}
public class Program
{
public static void SerializingData()
{
Student student = new Student(1, "Sneha", "Kasarwadi, Pune");
//creating file to store data
FileStream fileStream = new FileStream(@"E:\Content\Student.txt",
FileMode.Create);
BinaryFormatter binaryFormatter = new BinaryFormatter();
//serializing data using Serialize() method
binaryFormatter.Serialize(fileStream, student);
fileStream.Close();
}
public static void DeserializingData()
{
Student student;
//opening file to read data
FileStream fileStream = new FileStream(@"E:\Content\Student.txt",
FileMode.Open);
BinaryFormatter binaryFormatter = new BinaryFormatter();
//creating object to store deserialized data
student = (Student)binaryFormatter.Deserialize(fileStream);
int rollNo = student.RollNo;
string name = student.Name;
string address = student.Address;
fileStream.Close();
//displaying deserialized data
Console.WriteLine("Deserialized data: ");
Console.WriteLine("Roll No = " + rollNo);
Console.WriteLine("Student Name = " + name);
Console.WriteLine("Student Address = " + address);
}
public static void Main(string[] args)
{
SerializingData();
DeserializingData();
Console.ReadLine();
}
}
}

Ausgabe:

Deserialisierung in C#

Beispiel #3

Beispiel, das die XML-Serialisierung und Deserialisierung einer benutzerdefinierten Klasse zeigt.

Code:

using System;
using System.IO;
using System.Xml.Serialization;
namespace ConsoleApp4
{
[Serializable]
public class Student
{
public int RollNo { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public Student()
{
RollNo = 0;
Name = "N/A";
Address = "N/A";
}
}
public class Program
{
public static void SerializingData(Student student)
{
//creating file to store data.
FileStream fileStream = new FileStream(@"E:\Content\Student.txt",
FileMode.Create);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Student));
//calling serialize() method to serialize data to file
xmlSerializer.Serialize(fileStream, student);
fileStream.Close();
}
public static void DeserializingData()
{
//opening file to read data
FileStream fileStream = new FileStream(@"E:\Content\Student.txt",
FileMode.Open);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Student))
//calling Deserialize() to deserialize data from the file
Student student = (Student)xmlSerializer.Deserialize(fileStream);
fileStream.Close();
Console.WriteLine("Deserialized data: ");
Console.WriteLine("Student Roll No = " + student.RollNo);
Console.WriteLine("Student Name = " + student.Name);
Console.WriteLine("Student Address = " + student.Address);
}
public static void Main(string[] args)
{
Student student = new Student();
Console.WriteLine("Enter student Roll No");
student.RollNo = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter student name");
student.Name = Console.ReadLine();
Console.WriteLine("Enter student address");
student.Address = Console.ReadLine();
SerializingData(student);
DeserializingData();
Console.ReadLine();
}
}
}

Ausgabe:

Deserialisierung in C#

Fazit

Deserialisierung ist der Prozess der Rekonstruktion eines Objekts aus einer zuvor serialisierten Bytefolge. Dadurch können wir das Objekt jederzeit wiederherstellen. Es handelt sich um den umgekehrten Prozess der Serialisierung. Die Deserialize()-Methode der BinaryFormatter-Klasse wird für die Deserialisierung aus einem Binärstream verwendet.

Das obige ist der detaillierte Inhalt vonDeserialisierung in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Zugriffsmodifikatoren in C#Nächster Artikel:Zugriffsmodifikatoren in C#