Serializace a deserializace v C# s příkladem
⚡ Chytré shrnutí
Serializace v C# převádí objekt do proudu bajtů, takže jej lze uložit do souboru nebo odeslat mezi aplikacemi; deserializace objekt znovu sestaví. Zde se naučíte serializovat a deserializovat objekty s příklady.

Serializace a deserializace v C#
Koncept serializace a deserializace se používá vždy, když je třeba odeslat data týkající se objektů z jedné aplikace do druhé. Serializace se používá k exportu dat aplikace do souboru. Cílová aplikace poté použije deserializaci k exportu...tracdata z aplikace pro další použití.
Serializace je koncept, ve kterém jsou objekty třídy C# zapisovány nebo serializovány do souborů. Řekněme, že jste měli třídu C# s názvem Tutorial. A třída má 2 vlastnosti ID a název Tutorials.
Serializaci lze použít k přímému zápisu vlastností dat třídy Tutorial do souboru. Deserializace se používá k načtení dat ze souboru a opětovné konstrukci objektu Tutorial.
Typy serializace v C#
Jazyk C# podporuje několik formátů serializace a ten si vyberete na základě toho, kde budou data použita. Hlavní typy jsou uvedeny níže.
- Binární serializace převádí objekt do kompaktního binárního proudu. Je rychlý, ale nečitelný pro člověka a je vázán na .NET.
- Serializace XML používá třídu XmlSerializer k zápisu veřejných vlastností objektu do čitelného souboru XML.
- Serializace JSON používá System.Text.Json nebo Newtonsoft.Json k vytvoření lehkého JSON, nejběžnějšího formátu pro webová API.
- Serializace SOAPu formátuje data jako zprávy SOAP pro starší webové služby.
Jak serializovat objekt v C#
Podívejme se na příklad, jak toho můžeme dosáhnout.
V našem příkladu provedeme v kódu níže uvedené kroky na vysoké úrovni
- Vytvořte třídu s názvem Tutorial, která má 2 vlastnosti, jmenovitě ID a Název
- Poté vytvoříme objekt z třídy a přiřadíme hodnotu „1“ vlastnosti ID a hodnotu „.Net“ vlastnosti name.
- Potom použijeme serializaci k serializaci výše uvedeného objektu do souboru s názvem Example.txt
- Nakonec použijeme deserializaci k deserializaci objektu ze souboru a zobrazení hodnot v konzole.
Zadejte níže uvedený kód do souboru program.cs konzolové aplikace.
Krok 1) Přidejte třídu.
Prvním krokem je přidání třídy, která bude použita pro serializaci
Code Vysvětlení:-
- Třída, kterou je třeba serializovat, musí mít atribut [Serializable]. Toto je klíčové slovo v C#. Toto klíčové slovo je pak připojeno ke třídě Tutorial. Pokud tento atribut nezmíníte, při pokusu o serializaci třídy se zobrazí chyba.
- Dále je definována třída, která bude serializována. Zde definujeme třídu s názvem „Výukový program“ a poskytujeme 2 vlastnosti, jedna je „ID“ a druhá je „Název“.
Krok 2) Vytvořte objekt.
V tomto kroku nejprve vytvoříme objekt třídy Tutorial a serializujeme jej do souboru s názvem Example.txt
Code Vysvětlení:-
- Nejprve vytvoříme objekt třídy Tutorial. Poté přiřadíme hodnotu „1“ ID a „.net“ vlastnosti name.
- Poté použijeme třídu formátovače, která se používá k serializaci nebo převodu objektu do binárního formátu. Data v souboru v serializaci jsou provedena v binárním formátu. Dále vytvoříme objekt souborového proudu. Objekt file stream se používá k otevření souboru Example.txt pro účely zápisu. Klíčová slova FileMode.Create a FileMode.Write se používají ke konkrétní zmínce, že soubor by měl být otevřen pro účely zápisu.
- Nakonec použijeme metodu Serialize k přenosu binárních dat do souboru. Poté stream zavřeme od zápisu operace je kompletní.
Krok 3) Použijte deserializaci.
Nakonec, abychom zajistili, že data jsou v souboru přítomna, použijeme deserializaci k deserializaci objektu ze souboru.
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 Vysvětlení:-
- Vytváříme objekt "proud” pro otevření souboru Example.txt v režimu pouze pro čtení.
- Poté použijeme třídu formatter, která se používá k deserializaci objektu, který je uložen v souboru Example.txt. Vrácený objekt je nastaven na objekt objnew.
- Nakonec zobrazíme vlastnosti objektu „objnew“ konzoli pomocí vlastností „ID“ a „name“.
Když je nastaven výše uvedený kód a projekt je spuštěn pomocí Visual Studio, získáte níže uvedený výstup.
Výstup:-
Z výše uvedeného výstupu můžete vidět, že hodnoty ze souboru byly správně deserializovány a zobrazeny v konzole.
Serializace JSON v C#
JSON je nejrozšířenější formát pro moderní aplikace a webová API. Vestavěný System.Text.Json namespace serializuje a deserializuje objekty jediným voláním metody, jak je znázorněno níže.
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ýstup:
{"ID":1,"Name":".Net"}
.Net




