Introduksjon til deserialisering i C#

 C Programming >> C C# Program >  >> C#
Introduksjon til deserialisering i C#

Den følgende artikkelen gir en oversikt over deserialisering i C#. La oss først se prosessen med serialisering. Serialisering er prosessen med å konvertere et objekt til en form slik at det kan skrives i en strøm og kan lagres i minne, database eller i en fil. Hovedformålet er å lagre tilstanden til objektet.

Nå er deserialisering prosessen motsatt av serialisering. Det er prosessen med å lese eller konvertere bytestrøm tilbake til objektet slik at det kan lastes inn i minnet. Denne prosessen gjør oss i stand til å rekonstruere et objekt når det er nødvendig.

Start kurset for gratis programvareutvikling

Nettutvikling, programmeringsspråk, programvaretesting og annet

Syntaks med forklaring:

Syntaksen for deserialisering ved bruk av BinaryFormatter er som følger:

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

I syntaksen ovenfor opprettet vi først et objekt av FileStream (fileStream) ved å angi banen til filen (filePath) hvorfra vi vil hente informasjonen for å rekonstruere objektet. Etter dette opprettet vi et objekt av BinaryFormatter. BinaryFormatter er en klasse til stede under System.Runtime.Serialization.Formatters.Binary navneområde og brukes til å serialisere og deserialisere et objekt. Deretter deserialiserte vi objektet ved å bruke Deserialize()-metoden til BinaryFormatter som tar et objekt av FileStream som input og returnerer et objekt som vi konverterte til objektet av typen ClassName og deretter lagret det i objektnavn.

Hvordan fungerer deserialisering i C#?

For deserialisering i C#, må vi først importere System.IO-navneområdet i koden vår for å åpne filen som inneholder data som skal brukes til å rekonstruere objektet. Deretter må vi importere System.Runtime.Serialization.Formatters.Binary navneområde for å kunne jobbe med BinaryFormatter-klassen som vil være ansvarlig for å serialisere og deserialisere objektet.

La oss si at vi har en klasse kalt "Student" med to egenskaper, dvs. "Navn" og "RollNo". Ved å bruke serialiseringsprosessen vil vi skrive dataegenskapene til klassen 'Student' til en fil. Så ved å kalle Deserialize()-metoden til BinaryFormatter-klassen kan vi lese data fra den filen og kan rekonstruere objektet til klassen 'Student' som vi kalte deserialization of object.

Trinn som følges for å deserialisere et objekt i C# ved å bruke BinaryFormatter er som følger:

  • Først må vi opprette et strømobjekt for å kunne lese den serialiserte informasjonen eller dataene.
  • Deretter vil vi lage et objekt av klassen BinaryFormatter.
  • Etter det vil vi kalle Deserialize()-metoden til BinaryFormatter-klassen for å deserialisere objektet. Denne metoden vil returnere et objekt som vi kan caste til riktig type.

I C# er det tre typer serialisering:

  1. Binær serialisering
  2. XML-serialisering
  3. JSON-serialisering

Dermed kan vi deserialisere objekter på tre måter i henhold til serialiseringen som er gjort. For binær serialisering og deserialisering bruker vi BinaryFormatter-klassen som diskutert ovenfor, for XML-serialisering og deserialisering bruker vi XMLSerializer-klassen og for JSON-serialisering og deserialisering bruker vi JsonSerializer-klassen.

Bildefremstilling av serialisering og deserialisering i C#:

Eksempler på deserialisering i C#

Nedenfor er eksemplene:

Eksempel #1

Eksempel som viser binær serialisering og deserialisering.

Kode:

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();
}
}
} 

Utdata:

Eksempel #2

Eksempel som viser binær serialisering og deserialisering av tilpasset klasse.

Kode:

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();
}
}
}

Utdata:

Eksempel #3

Eksempel som viser XML-serialisering og deserialisering av tilpasset klasse.

Kode:

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();
}
}
}

Utdata:

Konklusjon

Deserialisering er prosessen med å rekonstruere et objekt fra en tidligere serialisert sekvens av byte. Det lar oss gjenopprette objektet når det er nødvendig. Det er den omvendte prosessen med serialisering. Deserialize()-metoden i BinaryFormatter-klassen brukes for deserialisering fra binær strøm.