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




