Serialisering och deserialisering i C# med exempel
โก Smart sammanfattning
Serialisering i C# konverterar ett objekt till en strรถm av byte sรฅ att det kan sparas i en fil eller skickas mellan applikationer; avserialisering รฅterskapar objektet. Hรคr lรคr du dig att serialisera och avserialisera objekt med exempel.

Serialisering och deserialisering i C#
Konceptet serialisering och avserialisering anvรคnds nรคr data som rรถr objekt mรฅste skickas frรฅn en applikation till en annan. Serialisering anvรคnds fรถr att exportera applikationsdata till en fil. Destinationsapplikationen anvรคnder sedan avserialisering fรถr att exporteratracdata frรฅn applikationen fรถr vidare anvรคndning.
Serialisering รคr ett koncept dรคr C#-klassobjekt skrivs eller serialiseras till filer. Lรฅt sรคga att du hade en C#-klass som heter Tutorial. Och klassen har 2 egenskaper med ID och Tutorials namn.
Serialisering kan anvรคndas fรถr att direkt skriva dataegenskaperna fรถr klassen Tutorial till en fil. Deserialisering anvรคnds fรถr att lรคsa data frรฅn filen och konstruera Tutorial-objektet igen.
Typer av serialisering i C#
C# stรถder flera serialiseringsformat, och du vรคljer ett baserat pรฅ var data ska anvรคndas. Huvudtyperna listas nedan.
- Binรคr serialisering konverterar ett objekt till en kompakt binรคr strรถm. Den รคr snabb men inte lรคsbar av mรคnniskor och รคr kopplad till .NET.
- XML-serialisering anvรคnder XmlSerializer-klassen fรถr att skriva ett objekts publika egenskaper till en lรคsbar XML-fil.
- JSON-serialisering anvรคnder System.Text.Json eller Newtonsoft.Json fรถr att producera lรคttvikts-JSON, det vanligaste formatet fรถr webb-API:er.
- SOAP-serialisering formaterar data som SOAP-meddelanden fรถr รคldre webbtjรคnster.
Hur man serialiserar ett objekt i C#
Lรฅt oss titta pรฅ ett exempel pรฅ hur vi kan uppnรฅ detta.
I vรฅrt exempel kommer vi att utfรถra stegen nedan pรฅ hรถg nivรฅ i koden
- Skapa en klass som heter Tutorial som har 2 egenskaper, nรคmligen ID och Namn
- Vi kommer sedan att skapa ett objekt frรฅn klassen och tilldela vรคrdet "1" till ID-egenskapen och vรคrdet ".Net" till namnegenskapen.
- Vi kommer sedan att anvรคnda serialisering fรถr att serialisera objektet ovan till en fil som heter Exempel.txt
- Slutligen kommer vi att anvรคnda deserialisering fรถr att deserialisera objektet frรฅn filen och visa vรคrdena i konsolen.
Ange koden nedan i filen program.cs i konsolapplikationen.
Steg 1) Lรคgg till klassen.
Det fรถrsta steget รคr att lรคgga till klassen som kommer att anvรคndas fรถr serialisering
Code Fรถrklaring:-
- Klassen som behรถver serialiseras mรฅste ha attributet [Serializable]. Detta รคr ett nyckelord i C#. Det hรคr nyckelordet kopplas sedan till handledningsklassen. Om du inte nรคmner detta attribut kommer du att fรฅ ett felmeddelande nรคr du fรถrsรถker serialisera klassen.
- Nรคsta รคr definitionen av klassen som kommer att serialiseras. Hรคr definierar vi en klass som heter "Tutorial" och tillhandahรฅller 2 egenskaper, en รคr "ID" och den andra รคr "Namn."
Steg 2) Skapa objektet.
I det hรคr steget kommer vi fรถrst att skapa objektet fรถr klassen Tutorial och serialisera det till filen Exempel.txt
Code Fรถrklaring:-
- Fรถrst skapar vi ett objekt av klassen Tutorial. Vi tilldelar sedan vรคrdet "1" till ID och ".net" till namnegenskapen.
- Vi anvรคnder sedan formateringsklassen som anvรคnds fรถr att serialisera eller konvertera objektet till ett binรคrt format. Data i filen i serialisering gรถrs i binรคrt format. Dรคrefter skapar vi ett filstrรถmsobjekt. Filstrรถmsobjektet anvรคnds fรถr att รถppna filen Exempel.txt fรถr skrivรคndamรฅl. Nyckelorden FileMode.Create och FileMode.Write anvรคnds fรถr att specifikt nรคmna att filen ska รถppnas fรถr skrivsyften.
- Slutligen anvรคnder vi Serialize-metoden fรถr att รถverfรถra binรคra data till filen. Vi stรคnger sedan strรถmmen, eftersom skrivningen drift รคr komplett.
Steg 3) Anvรคnd deserialisering.
Slutligen fรถr att sรคkerstรคlla att data finns i filen anvรคnder vi deserialisering fรถr att deserialisera objektet frรฅn 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 Fรถrklaring:-
- Vi skapar objektet "strรถmโ fรถr att รถppna filen Exempel.txt i lรคsskyddat lรคge.
- Vi anvรคnder sedan formateringsklassen som anvรคnds fรถr att deserialisera objektet, som lagras i filen Example.txt. Objektet som returneras รคr satt till objektet objnew.
- Slutligen visar vi egenskaperna fรถr objektet "objnew" till konsolen med hjรคlp av egenskaperna "ID" och "name".
Nรคr ovanstรฅende kod รคr instรคlld och projektet kรถrs med Visual Studio, fรฅr du utdata nedan.
Produktion:-
Du kan se frรฅn ovanstรฅende utdata att vรคrdena frรฅn filen deserialiserades korrekt och visades i konsolen.
JSON-serialisering i C#
JSON รคr det mest anvรคnda formatet fรถr moderna applikationer och webb-API:er. Det inbyggda System.Text.Json namnrymden serialiserar och avserialiserar objekt med ett enda metodanrop, som visas nedan.
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(); } } }
Produktion:
{"ID":1,"Name":".Net"}
.Net




