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





