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




