Serializace a deserializace v C# s příkladem
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 pak pomocí deserializace extrahuje data 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.
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
Vysvětlení kódu:-
- 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
Vysvětlení kódu:-
- 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(); } } }
Vysvětlení kódu:-
- 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.
Shrnutí
Serializace se používá k zápisu objektů třídy do souborů.
De-serializace se používá k obnovení objektů ze souboru.