Serialisering og deserialisering i C# med eksempel
โก Smart oppsummering
Serialisering i C# konverterer et objekt til en strรธm av byte slik at det kan lagres i en fil eller sendes mellom applikasjoner; deserialisering gjenoppbygger objektet. Her lรฆrer du รฅ serialisere og deserialisere objekter med eksempler.

Serialisering og deserialisering i C#
Konseptet serialisering og deserialisering brukes nรฅr data knyttet til objekter mรฅ sendes fra ett program til et annet. Serialisering brukes til รฅ eksportere programdata til en fil. Destinasjonsprogrammet bruker deretter deserialisering til รฅ eksporteretracdataene fra applikasjonen for videre bruk.
Serialisering er et konsept der C#-klasseobjekter skrives eller serialiseres til filer. La oss si at du hadde en C#-klasse kalt Tutorial. Og klassen har 2 egenskaper med ID og opplรฆringsnavn.
Serialisering kan brukes til รฅ skrive dataegenskapene til opplรฆringsklassen direkte til en fil. Deserialisering brukes til รฅ lese dataene fra filen og konstruere Tutorial-objektet pรฅ nytt.
Typer serialisering i C#
C# stรธtter flere serialiseringsformater, og du velger ett basert pรฅ hvor dataene skal brukes. Hovedtypene er listet opp nedenfor.
- Binรฆr serialisering konverterer et objekt til en kompakt binรฆrstrรธm. Den er rask, men ikke lesbar for mennesker, og er knyttet til .NET.
- XML-serialisering bruker XmlSerializer-klassen til รฅ skrive et objekts offentlige egenskaper til en lesbar XML-fil.
- JSON-serialisering bruker System.Text.Json eller Newtonsoft.Json til รฅ produsere lett JSON, det vanligste formatet for web-API-er.
- SOAP-serialisering formaterer data som SOAP-meldinger for eldre webtjenester.
Hvordan serialisere et objekt i C#
La oss se pรฅ et eksempel pรฅ hvordan vi kan oppnรฅ dette.
I vรฅrt eksempel skal vi utfรธre trinnene pรฅ hรธyt nivรฅ nedenfor i koden
- Lag en klasse kalt Tutorial som har 2 egenskaper, nemlig ID og Navn
- Vi vil da lage et objekt fra klassen og tilordne verdien "1" til ID-egenskapen og verdien ".Net" til navneegenskapen.
- Vi vil da bruke serialisering for รฅ serialisere objektet ovenfor til en fil kalt Eksempel.txt
- Til slutt vil vi bruke deserialisering for รฅ deserialisere objektet fra filen og vise verdiene i konsollen.
Skriv inn koden nedenfor i program.cs-filen til konsollapplikasjonen.
Trinn 1) Legg til klassen.
Det fรธrste trinnet er รฅ legge til klassen som skal brukes til serialisering
Code Forklaring:-
- Klassen som mรฅ serialiseres mรฅ ha [Serializable]-attributtet. Dette er et nรธkkelord i C#. Dette nรธkkelordet blir deretter knyttet til opplรฆringsklassen. Hvis du ikke nevner dette attributtet, vil du fรฅ en feilmelding nรฅr du prรธver รฅ serialisere klassen.
- Neste er definisjonen av klassen som skal serialiseres. Her definerer vi en klasse kalt "Tutorial" og gir 2 egenskaper, den ene er "ID" og den andre er "Navn."
Trinn 2) Lag objektet.
I dette trinnet vil vi fรธrst lage objektet til Tutorial-klassen og serialisere det til filen som heter Eksempel.txt
Code Forklaring:-
- Fรธrst lager vi et objekt av opplรฆringsklassen. Vi tildeler deretter verdien "1" til ID og ".net" til navneegenskapen.
- Vi bruker da formateringsklassen som brukes til รฅ serialisere eller konvertere objektet til et binรฆrt format. Dataene i filen i serialisering gjรธres i binรฆrt format. Deretter lager vi et filstrรธmobjekt. Filstrรธmobjektet brukes til รฅ รฅpne filen Eksempel.txt for skriveformรฅl. Nรธkkelordene FileMode.Create og FileMode.Write brukes for รฅ spesifikt nevne at filen skal รฅpnes for skriveformรฅl.
- Til slutt bruker vi Serialize-metoden for รฅ overfรธre de binรฆre dataene til filen. Vi stenger deretter strรธmmen, siden skrivingen drift er ferdig.
Trinn 3) Bruk deserialisering.
Til slutt for รฅ sikre at dataene er tilstede i filen, bruker vi deserialisering for รฅ 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 lager objektet "streamโ for รฅ รฅpne filen Eksempel.txt i skrivebeskyttet modus.
- Vi bruker da formateringsklassen som brukes til รฅ deserialisere objektet, som er lagret i filen Eksempel.txt. Objektet som returneres er satt til objektet objnew.
- Til slutt viser vi egenskapene til objektet "objnew" til konsollen ved รฅ bruke egenskapene "ID" og "name".
Nรฅr koden ovenfor er satt, og prosjektet kjรธres med Visual Studio, vil du fรฅ utgangen nedenfor.
Produksjon:-
Du kan se fra utgangen ovenfor at verdiene fra filen ble deserialisert riktig og vist i konsollen.
JSON-serialisering i C#
JSON er det mest brukte formatet for moderne applikasjoner og web-API-er. Det innebygde System.Text.Json Navnerommet serialiserer og deserialiserer objekter med et enkelt metodekall, 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(); } } }
Utgang:
{"ID":1,"Name":".Net"}
.Net




