Serialisointi ja deserialisointi C#:ssa esimerkin avulla
โก รlykรคs yhteenveto
C#:n sarjoittaminen muuntaa objektin tavuvirraksi, jotta se voidaan tallentaa tiedostoon tai lรคhettรครค sovellusten vรคlillรค; deserialisointi puolestaan โโrakentaa objektin uudelleen. Tรคssรค osiossa opit serialisoimaan ja deserialisoimaan objekteja esimerkkien avulla.

Serialisointi ja deserialisointi C#:ssa
Sarjallistamisen ja deserialisoinnin kรคsitteitรค kรคytetรครคn aina, kun objekteihin liittyvรครค dataa on lรคhetettรคvรค sovelluksesta toiseen. Sarjallistamista kรคytetรครคn sovellusdatan viemiseen tiedostoon. Kohdesovellus kรคyttรครค sitten deserialisointia tietojen lรคhettรคmiseen.tract tiedot sovelluksesta myรถhempรครค kรคyttรถรค varten.
Serialisointi on kรคsite, jossa C#-luokan objektit kirjoitetaan tai sarjoidaan tiedostoiksi. Oletetaan, ettรค sinulla oli C#-luokka nimeltรค Tutorial. Ja luokassa on 2 ominaisuutta ID ja Tutorials nimi.
Sarjaamalla voidaan kirjoittaa suoraan Tutorial-luokan dataominaisuudet tiedostoon. Deserialisointia kรคytetรครคn tietojen lukemiseen tiedostosta ja Tutorial-objektin uudelleen rakentamiseen.
Sarjallistamisen tyypit C#:ssa
C# tukee useita serialisointimuotoja, ja voit valita yhden sen perusteella, missรค tietoja kรคytetรครคn. Tรคrkeimmรคt tyypit on lueteltu alla.
- Binรครคrisarja muuntaa objektin kompaktiksi binรครคrivirraksi. Se on nopea, mutta ei ihmisen luettavissa ja on sidottu .NET:iin.
- XML-sarjoittelu kรคyttรครค XmlSerializer-luokkaa kirjoittaakseen objektin julkiset ominaisuudet luettavaan XML-tiedostoon.
- JSON-serialisointi kรคyttรครค System.Text.Jsonia tai Newtonsoft.Jsonia kevyen JSONin tuottamiseen, joka on yleisin web-APIen muoto.
- SOAP-serialisointi muotoilee tiedot SOAP-viesteiksi vanhemmille verkkopalveluille.
Objektin sarjoittaminen C#:ssa
Katsotaanpa esimerkkiรค siitรค, kuinka voimme saavuttaa tรคmรคn.
Esimerkissรคmme aiomme suorittaa alla olevat korkean tason vaiheet koodissa
- Luo luokka nimeltรค Tutorial, jossa on 2 ominaisuutta, nimittรคin ID ja nimi
- Luomme sitten luokasta objektin ja annamme arvon "1" ID-ominaisuuteen ja ".Net"-arvon nimiominaisuuteen.
- Kรคytรคmme sitten serialisointia sarjoittamaan yllรค olevan objektin tiedostoon nimeltรค Esimerkki.txt
- Lopuksi kรคytรคmme deserialisointia deserialoimaan objektin tiedostosta ja nรคyttรคmรครคn arvot konsolissa.
Kirjoita alla oleva koodi konsolisovelluksen program.cs-tiedostoon.
Vaihe 1) Lisรครค luokka.
Ensimmรคinen vaihe on lisรคtรค luokka, jota kรคytetรครคn sarjoitukseen
Code Selitys:-
- Sarjatettavalla luokalla on oltava [Serializable]-attribuutti. Tรคmรค on avainsana C#:ssa. Tรคmรค avainsana liitetรครคn sitten Tutorial-luokkaan. Jos et mainitse tรคtรค attribuuttia, saat virheilmoituksen, kun yritรคt sarjoittaa luokkaa.
- Seuraavaksi mรครคritellรครคn luokka, joka sarjoitetaan. Tรคssรค mรครคrittelemme luokan nimeltรค "Tutorial" ja tarjoamme 2 ominaisuutta, joista toinen on "ID" ja toinen "Nimi".
Vaihe 2) Luo objekti.
Tรคssรค vaiheessa luomme ensin Tutorial-luokan objektin ja sarjoimme sen tiedostoon nimeltรค Esimerkki.txt
Code Selitys:-
- Ensin luodaan Tutorial-luokan objekti. Mรครคritรคmme sitten arvon "1" ID:lle ja ".net" nimen ominaisuudelle.
- Kรคytรคmme sitten muotoilijaluokkaa, jota kรคytetรครคn sarjoittamaan tai muuttamaan objekti binรครคrimuotoon. Serialisoitavan tiedoston tiedot tehdรครคn binรครคrimuodossa. Seuraavaksi luomme tiedostovirtaobjektin. Tiedostovirtaobjektia kรคytetรครคn tiedoston Esimerkki.txt avaamiseen kirjoitustarkoituksiin. Avainsanoja FileMode.Create ja FileMode.Write kรคytetรครคn erityisesti mainitsemaan, ettรค tiedosto tulee avata kirjoittamista varten.
- Lopuksi kรคytรคmme Serialize-menetelmรครค binรครคritietojen siirtรคmiseen tiedostoon. Suljemme sitten virran kirjoittamisen jรคlkeen toiminta on valmis.
Vaihe 3) Kรคytรค deserialisointia.
Lopuksi varmistaaksemme, ettรค tiedot ovat tiedostossa, kรคytรคmme deserialisointia kohteen sarjoittamiseksi tiedostosta.
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 Selitys:-
- Luomme kohteen "virta" avataksesi tiedoston Esimerkki.txt vain luku -tilassa.
- Kรคytรคmme sitten muotoilijaluokkaa, jota kรคytetรครคn deserialisoimaan objekti, joka on tallennettu Esimerkki.txt-tiedostoon. Palautettu objekti asetetaan objektiksi objnew.
- Lopuksi nรคytรคmme objektin "objnew" ominaisuudet konsolille kรคyttรคmรคllรค "ID" ja "name" ominaisuuksia.
Kun yllรค oleva koodi on asetettu ja projektia ajetaan kรคyttรคen Visual Studio, saat alla olevan tulosteen.
Lรคhtรถ: -
Yllรค olevasta lรคhdรถstรค nรคet, ettรค tiedoston arvot sarjoitettiin oikein ja ne nรคytettiin konsolissa.
JSON-sarjallistaminen C#:lla
JSON on yleisimmin kรคytetty muoto nykyaikaisissa sovelluksissa ja web-rajapinnoissa. Sisรครคnrakennettu System.Text.Json namespace sarjoittaa ja deserialisoi objektit yhdellรค metodikutsulla, kuten alla on esitetty.
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(); } } }
lรคhtรถ:
{"ID":1,"Name":".Net"}
.Net




