Serializace (C#)
Serializace je proces převodu objektu na datový proud bajtů pro uložení objektu nebo jej přenést do paměti, databáze nebo souboru. Jeho hlavním účelem je uložit stav objektu, aby ho bylo možné v případě potřeby znovu vytvořit. Reverzní proces se nazývá deserializace.
Jak funguje serializace
Tento obrázek znázorňuje celkový proces serializace:

Objekt je serializován do datového proudu, který přenáší data. Datový proud může mít také informace o typu objektu, jako je jeho verze, jazyková verze a název sestavení. Z tohoto datového proudu může být objekt uložen v databázi, souboru nebo paměti.
Použití pro serializaci
Serializace umožňuje vývojáři uložit stav objektu a znovu jej vytvořit podle potřeby, poskytování úložiště objektů a také výměny dat. Prostřednictvím serializace může vývojář provádět akce, jako například:
- Odeslání objektu do vzdálené aplikace pomocí webové služby
- Předání objektu z jedné domény do jiné
- Předání objektu bránou firewall jako řetězce JSON nebo XML
- Zachování zabezpečení nebo informací specifických pro uživatele napříč aplikacemi
Serializace JSON
Obor System.Text.Json názvů obsahuje třídy pro JavaScript Object Notation (JSON) serializace a deserializace. JSON je otevřený standard, který se běžně používá ke sdílení dat na webu.
Serializace JSON serializuje veřejné vlastnosti objektu do řetězce, pole bajtů nebo datového proudu, který odpovídá specifikaci JSON RFC 8259. Chcete-li JsonSerializer řídit způsob serializace nebo deserializace instance třídy:
- Použití JsonSerializerOptions objektu
- Použití atributů z oboru System.Text.Json.Serialization názvů na třídy nebo vlastnosti
- Implementace vlastních převaděčů
Binární serializace a serializace XML
Obor System.Runtime.Serialization názvů obsahuje třídy pro binární a XML serializace a deserializace.
Binární serializace používá binární kódování k vytvoření kompaktní serializace pro použití, jako je například úložiště nebo soketů síťových proudů. V binární serializaci jsou serializován všechny členy, dokonce i členy, které jsou jen pro čtení, a výkon je zvýšen.
Upozornění
Binární serializace může být nebezpečná. Další informace najdete v tématu BinaryFormatter Security Guide.
Serializace XML serializuje veřejné pole a vlastnosti objektu nebo parametry a návratové hodnoty metod do datového proudu XML, který odpovídá dokumentu konkrétní jazykA XSD (Schema Definition Language). Výsledkem serializace XML silného typu třídy s veřejné vlastnosti a pole, které jsou převedeny na XML. System.Xml.Serialization obsahuje třídy pro serializaci a deserializaci XML. Použijete atributy třídy a členy třídy k řízení způsobu, jakým serializuje nebo XmlSerializer deserializuje instanci třídy.
Vytvoření objektu serializovatelného
Pro binární serializaci nebo serializaci XML potřebujete:
- Objekt, který má být serializován
- Datový proud, který má obsahovat serializovaný objekt
- System.Runtime.Serialization.FormatterInstance
Použít SerializableAttribute atribut na typ k označení, že instance typu lze serializovat. Pokud se pokusíte serializovat, ale typ nemá atribut, je vyvolána SerializableAttribute výjimka.
Chcete-li zabránit serializován pole, použijte NonSerializedAttribute atribut. Pokud pole serializovatelného typu obsahuje ukazatel, popisovač nebo jinou datovou strukturu, která je specifická pro konkrétní prostředí, a pole nelze smysluplně rekonzisovat v jiném prostředí, může být neserializovatelné.
Pokud serializovaná třída obsahuje odkazy na objekty jiných tříd, které jsou označeny , budou tyto objekty také SerializableAttribute serializován.
Základní a vlastní serializace
Binární serializace a serializace XML lze provádět dvěma způsoby, základní a vlastní.
Základní serializace používá rozhraní .NET k automatické serializaci objektu. Jediným požadavkem je, aby třída SerializableAttribute použila atribut . lze NonSerializedAttribute použít k tomu, aby byla serializována konkrétní pole.
Při použití základní serializace může vytváření verzí objektů vytvořit problémy. Vlastní serializace byste použít v případě, že jsou důležité problémy se s sekcí verzí. Základní serializace je nejjednodušší způsob, jak provést serializace, ale neposkytuje velkou kontrolu nad procesem.
Ve vlastní serializace můžete určit přesně, které objekty budou serializován a jak bude provedeno. Třída musí být označena SerializableAttribute a implementovat ISerializable rozhraní. Pokud chcete, aby byl objekt také deserializován vlastním způsobem, použijte vlastní konstruktor.
Serializace návrháře
Serializace návrháře je speciální forma serializace, která zahrnuje druh trvalost objektu přidružené k vývojových nástrojů. Serializace návrháře je proces převodu grafu objektu na zdrojový soubor, který lze později použít k obnovení grafu objektu. Zdrojový soubor může obsahovat kód, značky nebo dokonce SQL tabulku.
Související témata a příklady
System.Text.Json – přehled Ukazuje, jak získat System.Text.Json knihovnu.
Jak serializovat a deserializovat JSON v .NET. Ukazuje, jak číst a zapisovat data objektů do a z JSON pomocí JsonSerializer třídy .
Návod: Uchování objektu v Visual Studio (C#)
Ukazuje, jak lze serializace lze použít k zachování dat objektu mezi instancemi, což vám umožní ukládat hodnoty a načíst je při příštím vytvoření instance objektu.
Jak číst data objektu ze souboru XML (C#)
Ukazuje, jak číst data objektu, která byla dříve zapsána do souboru XML pomocí XmlSerializer třídy.
Jak zapisovat data objektu do souboru XML (C#)
Ukazuje, jak zapsat objekt z třídy do souboru XML pomocí XmlSerializer třídy.