Artikel berikut menyediakan garis besar Deserialisasi dalam C#. Mari kita lihat dahulu proses bersiri. Serialisasi ialah proses menukar objek kepada bentuk supaya ia boleh ditulis dalam aliran dan disimpan dalam ingatan, pangkalan data atau fail. Tujuan utamanya adalah untuk menyimpan keadaan objek.
Kini, penyahserikatan ialah proses yang bertentangan dengan pensirilan. Ia adalah proses membaca atau menukar aliran bait kembali kepada objek supaya ia boleh dimuatkan ke dalam ingatan. Proses ini membolehkan kami membina semula objek apabila diperlukan.
Sintaks dengan Penjelasan:
Sintaks untuk penyahserikatan menggunakan BinaryFormatter adalah seperti berikut:
FileStream fileStream = new FileStream(filePath, FileMode.Open); BinaryFormatter binaryFormatter = new BinaryFormatter(); ClassName objectName = (ClassName)binaryformatter.Deserialize(fileStream);
Dalam sintaks di atas, pertama, kami mencipta objek FileStream (fileStream) dengan memberikan laluan fail (filePath) dari mana kami akan mendapatkan maklumat untuk membina semula objek. Selepas ini, kami mencipta objek BinaryFormatter. BinaryFormatter ialah kelas yang terdapat di bawah System.Runtime.Serialization.Formatters.Binary namespace dan digunakan untuk mensiri dan menyahsiri objek. Kemudian, kami menyahsiri objek menggunakan kaedah Deserialize() BinaryFormatter, yang mengambil objek FileStream sebagai input dan mengembalikan objek yang kami tukar kepada objek jenis ClassName dan kemudian menyimpannya dalam objectName.
Untuk penyahserikatan dalam C#, kami perlu mengimport ruang nama System.IO dahulu dalam kod kami untuk membuka fail yang mengandungi data yang akan digunakan untuk membina semula objek. Kemudian kita perlu mengimport System.Runtime.Serialization.Formatters.Binary namespace untuk bekerja dengan kelas BinaryFormatter yang akan bertanggungjawab untuk mensiri dan menyahsiri objek.
Katakan kita mempunyai kelas yang dipanggil 'Pelajar' dengan dua sifat iaitu, 'Nama' dan 'RollNo'. Kami akan menulis sifat data kelas 'Pelajar' ke fail menggunakan proses bersiri. Kemudian dengan memanggil kaedah Deserialize() kelas BinaryFormatter, kita boleh membaca data daripada fail itu dan membina semula objek kelas 'Pelajar', yang kita panggil penyahserialisasian objek.
Langkah-langkah yang diikuti untuk menyahsiri objek dalam C# menggunakan BinaryFormatter adalah seperti berikut:
Dalam C#, terdapat tiga jenis siri:
Oleh itu, mengikut siri yang dilakukan, kita boleh menyahsiri objek dalam tiga cara. Untuk siri binari dan penyahserikatan, kami menggunakan kelas BinaryFormatter seperti yang dibincangkan di atas; untuk penyiaran dan penyahserikatan XML, kami menggunakan kelas XMLSerializer; dan untuk pensirilan dan penyahserilangan JSON, kami menggunakan kelas JsonSerializer.
Perwakilan bergambar bagi penyiaran dan penyahserikatan dalam C#:
Diberikan di bawah adalah contoh:
Contoh menunjukkan siri binari dan penyahsirilan.
Kod:
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>
Output:
Contoh menunjukkan pensirilan binari dan penyahserikatan kelas tersuai.
Kod:
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(); } } }
Output:
Contoh menunjukkan pensirilan XML dan penyahsirilan kelas tersuai.
Kod:
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(); } } }
Output:
Deserialisasi ialah proses membina semula objek daripada jujukan bait bersiri sebelum ini. Ia membolehkan kami memulihkan objek apabila ia diperlukan. Ia adalah proses bersiri terbalik. Kaedah deserialize() kelas BinaryFormatter digunakan untuk penyahserikatan daripada aliran binari.
Atas ialah kandungan terperinci Penyahserialisasian dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!