Serialisering og deserialisering i C# med eksempel
⚡ Smart opsummering
Serialisering i C# konverterer et objekt til en strøm af bytes, så det kan gemmes i en fil eller sendes mellem applikationer; deserialisering genopbygger objektet. Her lærer du at serialisere og deserialisere objekter med eksempler.

Serialisering og deserialisering i C#
Koncepterne serialisering og deserialisering bruges, når data vedrørende objekter skal sendes fra et program til et andet. Serialisering bruges til at eksportere programdata til en fil. Destinationsprogrammet bruger derefter deserialisering til at eksporteretracdataene fra applikationen til videre brug.
Serialisering er et koncept, hvor C#-klasseobjekter skrives eller serialiseres til filer. Lad os sige, at du havde en C#-klasse kaldet Tutorial. Og klassen har 2 egenskaber med ID og Tutorials navn.
Serialisering kan bruges til direkte at skrive dataegenskaberne for Tutorial-klassen til en fil. Deserialisering bruges til at læse dataene fra filen og konstruere Tutorial-objektet igen.
Typer af serialisering i C#
C# understøtter adskillige serialiseringsformater, og du vælger et baseret på, hvor dataene skal bruges. Hovedtyperne er anført nedenfor.
- Binær serialisering konverterer et objekt til en kompakt binær strøm. Den er hurtig, men ikke menneskeligt læsbar, og er knyttet til .NET.
- XML-serialisering bruger XmlSerializer-klassen til at skrive et objekts offentlige egenskaber til en læsbar XML-fil.
- JSON-serialisering bruger System.Text.Json eller Newtonsoft.Json til at producere letvægts-JSON, det mest almindelige format til web-API'er.
- SOAP-serialisering formaterer data som SOAP-meddelelser til ældre webtjenester.
Sådan serialiseres et objekt i C#
Lad os se på et eksempel på, hvordan vi kan opnå dette.
I vores eksempel skal vi udføre nedenstående trin på højt niveau i koden
- Opret en klasse kaldet Tutorial, som har 2 egenskaber, nemlig ID og Navn
- Vi vil derefter oprette et objekt fra klassen og tildele værdien "1" til ID-egenskaben og værdien ".Net" til navnegenskaben.
- Vi vil derefter bruge serialisering til at serialisere ovenstående objekt til en fil kaldet Eksempel.txt
- Til sidst vil vi bruge deserialisering til at deserialisere objektet fra filen og vise værdierne i konsollen.
Indtast nedenstående kode i program.cs-filen i konsolapplikationen.
Trin 1) Tilføj klassen.
Det første trin er at tilføje klassen, som skal bruges til serialisering
Code Forklaring:-
- Klassen, der skal serialiseres, skal have attributten [Serializable]. Dette er et nøgleord i C#. Dette nøgleord vedhæftes derefter til selvstudieklassen. Hvis du ikke nævner denne egenskab, får du en fejl, når du forsøger at serialisere klassen.
- Dernæst er definitionen af klassen, som vil blive serialiseret. Her definerer vi en klasse kaldet "Tutorial" og giver 2 egenskaber, den ene er "ID" og den anden er "Navn."
Trin 2) Opret objektet.
I dette trin vil vi først oprette objektet i Tutorial-klassen og serialisere det til filen kaldet Eksempel.txt
Code Forklaring:-
- Først opretter vi et objekt af klassen Tutorial. Vi tildeler derefter værdien "1" til ID og ".net" til navnegenskaben.
- Vi bruger derefter formateringsklassen, som bruges til at serialisere eller konvertere objektet til et binært format. Dataene i filen i serialisering udføres i binært format. Dernæst opretter vi et filstream-objekt. Filstreamobjektet bruges til at åbne filen Eksempel.txt til skriveformål. Nøgleordene FileMode.Create og FileMode.Write bruges til specifikt at nævne, at filen skal åbnes til skriveformål.
- Til sidst bruger vi Serialize-metoden til at overføre de binære data til filen. Vi lukker derefter strømmen, siden skrivningen drift er færdig.
Trin 3) Brug deserialisering.
Til sidst for at sikre, at dataene er til stede i filen, bruger vi deserialisering til at deserialisere objektet fra filen.
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 Forklaring:-
- Vi skaber objektet "strøm” for at åbne filen Eksempel.txt i skrivebeskyttet tilstand.
- Vi bruger derefter formateringsklassen, som bruges til at deserialisere objektet, som er gemt i filen Eksempel.txt. Det returnerede objekt indstilles til objektet objnew.
- Til sidst viser vi egenskaberne for objektet "objnew" til konsollen ved hjælp af "ID" og "name" egenskaberne.
Når ovenstående kode er indstillet, og projektet køres vha Visual Studio, får du nedenstående output.
Produktion:-
Du kan se fra ovenstående output, at værdierne fra filen blev deserialiseret korrekt og vist i konsollen.
JSON-serialisering i C#
JSON er det mest anvendte format til moderne applikationer og web-API'er. Det indbyggede System.Text.Json Navneområdet serialiserer og deserialiserer objekter med et enkelt metodekald, som vist nedenfor.
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(); } } }
Output:
{"ID":1,"Name":".Net"}
.Net




