Serialiseerimine ja deserialiseerimine C#-s näitega

⚡ Nutikas kokkuvõte

C#-s serialiseerimine teisendab objekti baitide vooguks, et seda saaks faili salvestada või rakenduste vahel saata; deserialiseerimine loob objekti uuesti. Siin õpid näidete abil objekte serialiseerima ja deserialiseerima.

  • 🔄 Mis see on: Serialiseerimine kirjutab C# objekti faili ja deserialiseerimine loeb selle tagasi.
  • ???? ️ [Serialiseeritav]: Klass vajab enne serialiseerimist atribuuti [Serializable].
  • 💾 Binaarne vorming: BinaryFormatter koos FileStreamiga kirjutab objekti binaarvormingus.
  • 🧩 Formaadid: C# toetab loetava väljundi jaoks ka XML-i ja JSON-i serialiseerimist.
  • 🤖 Tehisintellekti abi: Tehisintellekti tööriistad, näiteks GitHub Copilot, genereerivad serialiseerimiskoodi koheselt.

C# serialiseerimine ja deserialiseerimine

Serialiseerimine ja deserialiseerimine C# keeles

Serialiseerimise ja deserialiseerimise mõisteid kasutatakse alati, kui objektidega seotud andmeid tuleb ühest rakendusest teise saata. Serialiseerimist kasutatakse rakenduse andmete eksportimiseks faili. Seejärel kasutab sihtrakendus deserialiseerimist andmete eksportimiseks.tracrakendusest pärit andmed edasiseks kasutamiseks.

Serialiseerimine on kontseptsioon, milles C# klassi objektid kirjutatakse või jadatakse failidesse. Oletame, et teil oli C# klass nimega Tutorial. Ja klassil on 2 atribuuti ID ja Tutorials nimi.

Serialiseerimist saab kasutada klassi Tutorial andmete atribuutide otse faili kirjutamiseks. Deserialiseerimist kasutatakse andmete lugemiseks failist ja Tutorial objekti uuesti koostamiseks.

Serialiseerimise tüübid C#-s

C# toetab mitmeid serialiseerimisvorminguid ja saate valida ühe vastavalt sellele, kus andmeid kasutatakse. Peamised tüübid on loetletud allpool.

  • Binaarne serialiseerimine teisendab objekti kompaktseks binaarvooguks. See on kiire, kuid mitte inimloetav ja seotud .NET-iga.
  • XML-serialiseerimine kasutab XmlSerializer klassi objekti avalike omaduste kirjutamiseks loetavasse XML-faili.
  • JSON-i serialiseerimine kasutab kerge JSON-i loomiseks System.Text.Jsoni või Newtonsoft.Jsoni, mis on veebiliideste kõige levinum vorming.
  • SOAP-serialiseerimine vormindab andmed vanemate veebiteenuste jaoks SOAP-sõnumitena.

Objekti serialiseerimine C#-s

Vaatame näidet selle kohta, kuidas seda saavutada.

Meie näites teeme koodis alltoodud kõrgetasemelised toimingud

  1. Looge klass nimega Tutorial, millel on 2 atribuuti, nimelt ID ja nimi
  2. Seejärel loome klassist objekti ja määrame ID atribuudile väärtuse "1" ja nime atribuudile väärtuse ".Net".
  3. Seejärel kasutame serialiseerimist ülaltoodud objekti serialiseerimiseks failiks Näide.txt
  4. Lõpuks kasutame deserialiseerimist objekti failist deserialiseerimiseks ja väärtuste kuvamiseks konsoolis.

Sisestage allolev kood konsoolirakenduse faili program.cs.

Step 1) Lisage klass.

Esimene samm on lisada klass, mida kasutatakse serialiseerimiseks

Objekti järjestamine C#-s

Code Selgitus:-

  1. Serialiseeritaval klassil peab olema atribuut [Serialisable]. See on märksõna C#-s. See märksõna lisatakse seejärel klassile Tutorial. Kui te seda atribuuti ei maini, kuvatakse klassi serialiseerimisel veateade.
  2. Järgmine on serialiseeritava klassi määratlus. Siin määratleme klassi nimega "Tutorial" ja pakume 2 atribuuti, millest üks on "ID" ja teine ​​on "nimi".

Step 2) Loo objekt.

Selles etapis loome esmalt klassi Tutorial objekti ja serialiseerime selle failiks Näide.txt

Objekti järjestamine C#-s

Code Selgitus:-

  1. Esiteks loome klassi Tutorial objekti. Seejärel määrame ID-le väärtuse "1" ja nime atribuudile ".net".
  2. Seejärel kasutame vormindusklassi, mida kasutatakse objekti binaarvormingusse serialiseerimiseks või teisendamiseks. Serialiseeritavas failis olevad andmed tehakse binaarvormingus. Järgmisena loome failivoo objekti. Failivoo objekti kasutatakse faili Näide.txt avamiseks kirjutamise eesmärgil. Märksõnu FileMode.Create ja FileMode.Write kasutatakse selleks, et mainida, et fail tuleks kirjutamiseks avada.
  3. Lõpuks kasutame binaarandmete faili edastamiseks Serialize meetodit. Seejärel sulgeme voo, alates kirjutamisest töö on täielik.

Step 3) Kasutage deserialiseerimist.

Lõpuks, et tagada andmete olemasolu failis, kasutame objekti failist deserialiseerimiseks deserialiseerimist.

Objekti järjestamine C#-s

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 Selgitus:-

  1. Loome objekti "oja” faili Näide.txt avamiseks lugemisrežiimis.
  2. Seejärel kasutame vormindusklassi, mida kasutatakse objekti deserialiseerimiseks, mis on salvestatud faili Example.txt. Tagastatud objektiks määratakse objekt objnew.
  3. Lõpuks kuvame konsooli objekti "objnew" atribuudid, kasutades atribuute "ID" ja "name".

Kui ülaltoodud kood on määratud ja projekti käitatakse kasutades Visual Studio, saate alloleva väljundi.

Väljund:-

Objekti järjestamine C#-s

Ülaltoodud väljundist näete, et faili väärtused deserialiseeriti korralikult ja kuvati konsoolis.

JSON-i serialiseerimine C#-s

JSON on tänapäevaste rakenduste ja veebiliideste (API-de) jaoks kõige laialdasemalt kasutatav vorming. Sisseehitatud System.Text.Json namespace serialiseerib ja deserialiseerib objektid ühe meetodikõnega, nagu allpool näidatud.

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();
    }
  }
}

Väljund:

{"ID":1,"Name":".Net"}
.Net

KKK

Serialiseerimine teisendab C# objekti baitide vooguks (binaar-, XML- või JSON-vormingus), et seda saaks faili salvestada või teise rakendusse saata. Deserialiseerimine loob objekti nendest andmetest uuesti.

Atribuut [Serializable] märgistab klassi, et selle objekte saaks serialiseerida. Ilma selleta tekitab binaarne serialiseerimine erandi, kui proovite objekti faili kirjutada.

C# toetab binaarset serialiseerimist (kompaktne, ainult .NET-ile), XML-i serialiseerimist XmlSerializer'i kaudu, JSON-i serialiseerimist System.Text.Json'i kaudu ja SOAP-i serialiseerimist vanemate veebiteenuste jaoks.

Serialiseerimine kirjutab objekti andmed faili või voogu, deserialiseerimine aga loeb need andmed tagasi ja rekonstrueerib algse objekti mällu.

BinaryFormatter on nüüdseks aegunud ja seda peetakse ebaturvaliseks, kuna see võib deserialiseerimise ajal käivitada kahjulikku koodi. Microsoft Uute rakenduste jaoks soovitab System.Text.Json või XmlSerializer.

Tehisintellekti assistendid, näiteks GitHub Copilot, täidavad automaatselt serialiseerimis- ja deserialiseerimiskõnesid, lisavad atribuudi [Serializable] ning genereerivad lühikese kommentaari põhjal JSON- või XML-serialiseerimiskoodi.

Jah. Tehisintellektil põhinevad tööriistad genereerivad mudeliklasse, valivad JSON-i, XML-i ja binaarvormingu vahel ning lisavad veakäsitlust, et teie serialiseerimiskood oleks turvaline ja täielik.

Binaarsete serialisatsioonide puhul kasutatakse System.Runtime.Serialization.Formatters.Binary faili, JSON puhul System.Text.Json faili ja XML puhul System.Xml.Serialization faili.

Võta see postitus kokku järgmiselt: