Serijalizacija i deserijalizacija u C# s primjerom
⚡ Pametni sažetak
Serijalizacija u C# pretvara objekt u tok bajtova tako da se može spremiti u datoteku ili poslati između aplikacija; deserijalizacija ponovno gradi objekt. Ovdje ćete naučiti serijalizirati i deserializirati objekte s primjerima.
Serijalizacija i deserijalizacija u C#
Koncept serijalizacije i deserijalizacije koristi se kad god se podaci koji se odnose na objekte moraju poslati iz jedne aplikacije u drugu. Serijalizacija se koristi za izvoz podataka aplikacije u datoteku. Odredišna aplikacija zatim koristi deserijalizaciju za...tracpodatke iz aplikacije za daljnju upotrebu.
Serijalizacija je koncept u kojem se C# objekti klase pišu ili serijaliziraju u datoteke. Recimo da ste imali C# klasu pod nazivom Tutorial. A klasa ima 2 svojstva ID i naziv vodiča.
Serijalizacija se može koristiti za izravno pisanje svojstava podataka klase Tutorial u datoteku. Deserijalizacija se koristi za čitanje podataka iz datoteke i ponovnu konstrukciju objekta Tutorial.
Vrste serijalizacije u C#
C# podržava nekoliko formata serijalizacije, a odabirete jedan na temelju toga gdje će se podaci koristiti. Glavne vrste navedene su u nastavku.
- Binarna serijalizacija pretvara objekt u kompaktni binarni tok. Brz je, ali nije čitljiv ljudima i vezan je za .NET.
- XML serijalizacija koristi klasu XmlSerializer za zapisivanje javnih svojstava objekta u čitljivu XML datoteku.
- JSON serijalizacija koristi System.Text.Json ili Newtonsoft.Json za izradu laganog JSON-a, najčešćeg formata za web API-je.
- SOAP serijalizacija formatira podatke kao SOAP poruke za starije web servise.
Kako serijalizirati objekt u C#
Pogledajmo primjer kako to možemo postići.
U našem primjeru izvršit ćemo donje korake visoke razine u kodu
- Napravite klasu pod nazivom Tutorial koja ima 2 svojstva, naime ID i naziv
- Zatim ćemo stvoriti objekt iz klase i dodijeliti vrijednost “1” svojstvu ID i vrijednost “.Net” svojstvu name.
- Zatim ćemo koristiti serijalizaciju za serijalizaciju gornjeg objekta u datoteku pod nazivom Example.txt
- Na kraju ćemo koristiti deserijalizaciju za deserijalizaciju objekta iz datoteke i prikaz vrijednosti u konzoli.
Unesite donji kod u datoteku program.cs konzolne aplikacije.
Korak 1) Dodajte razred.
Prvi korak je dodavanje klase koja će se koristiti za serijalizaciju
Code Obrazloženje:-
- Klasa koju je potrebno serijalizirati mora imati atribut [Serializable]. Ovo je ključna riječ u C#. Ova se ključna riječ zatim pridružuje klasi Tutorial. Ako ne spomenete ovaj atribut, dobit ćete pogrešku kada pokušate serijalizirati klasu.
- Sljedeća je definicija klase koja će biti serijalizirana. Ovdje definiramo klasu pod nazivom "Tutorial" i pružamo 2 svojstva, jedno je "ID", a drugo je "Name".
Korak 2) Stvorite objekt.
U ovom koraku prvo ćemo stvoriti objekt klase Tutorial i serijalizirati ga u datoteku pod nazivom Example.txt
Code Obrazloženje:-
- Prvo, kreiramo objekt klase Tutorial. Zatim dodjeljujemo vrijednost "1" ID-u i ".net" svojstvu name.
- Zatim koristimo klasu formatera koja se koristi za serijalizaciju ili pretvaranje objekta u binarni format. Podaci u datoteci u serijalizaciji se izvode u binarnom formatu. Zatim stvaramo objekt toka datoteke. Objekt toka datoteke koristi se za otvaranje datoteke Example.txt u svrhu pisanja. Ključne riječi FileMode.Create i FileMode.Write koriste se za izričito spominjanje da se datoteka treba otvoriti u svrhu pisanja.
- Na kraju, koristimo metodu Serialize za prijenos binarnih podataka u datoteku. Zatim zatvaramo tok od pisanja operacija je dovršen.
Korak 3) Koristite deserijalizaciju.
Konačno, kako bismo osigurali da su podaci prisutni u datoteci, koristimo deserijalizaciju za deserijalizaciju objekta iz datoteke.
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 Obrazloženje:-
- Mi stvaramo objekt “potok” za otvaranje datoteke Example.txt u načinu rada samo za čitanje.
- Zatim koristimo klasu formattera koja se koristi za deserijalizaciju objekta, koji je pohranjen u datoteci Example.txt. Vraćeni objekt postavljen je na objekt objnew.
- Na kraju, prikazujemo svojstva objekta “objnew” na konzoli koristeći svojstva “ID” i “name”.
Kada je gornji kod postavljen i projekt se izvodi pomoću Visual Studio, dobit ćete donji izlaz.
Izlaz:-
Iz gornjeg izlaza možete vidjeti da su vrijednosti iz datoteke ispravno deserijalizirane i prikazane u konzoli.
JSON serijalizacija u C#
JSON je najčešće korišteni format za moderne aplikacije i web API-je. Ugrađeni System.Text.Json imenski prostor serijalizira i deserializira objekte jednim pozivom metode, kao što je prikazano dolje.
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(); } } }
Izlaz:
{"ID":1,"Name":".Net"}
.Net





