Serialisatie en deserialisatie in C# met voorbeeld
⚡ Slimme samenvatting
Serialisatie in C# zet een object om in een stroom bytes, zodat het kan worden opgeslagen in een bestand of tussen applicaties kan worden verzonden; deserialisatie bouwt het object weer op. Hier leer je aan de hand van voorbeelden hoe je objecten serialiseert en deserialiseert.
Serialisatie en deserialisatie in C#
Serialisatie en deserialisatie worden gebruikt wanneer objectgegevens van de ene applicatie naar de andere moeten worden verzonden. Serialisatie wordt gebruikt om applicatiegegevens naar een bestand te exporteren. De bestemmingsapplicatie gebruikt vervolgens deserialisatie om deze gegevens te exporteren.tracDe gegevens uit de applicatie voor verder gebruik.
Serialisatie is een concept waarbij C#-klasseobjecten naar bestanden worden geschreven of geserialiseerd. Stel dat u een C#-klasse had met de naam Tutorial. En de klasse heeft 2 eigenschappen: ID en Tutorials-naam.
Serialiseren kan worden gebruikt om de gegevenseigenschappen van de klasse Tutorial rechtstreeks naar een bestand te schrijven. Deserialisatie wordt gebruikt om de gegevens uit het bestand te lezen en het Tutorial-object opnieuw te construeren.
Soorten serialisatie in C#
C# ondersteunt verschillende serialisatieformaten, en je kiest er een op basis van waar de gegevens gebruikt zullen worden. De belangrijkste typen worden hieronder vermeld.
- Binaire serialisatie Converteert een object naar een compacte binaire stroom. Het is snel, maar niet leesbaar voor mensen en is gebonden aan .NET.
- XML-serialisatie Gebruikt de XmlSerializer-klasse om de openbare eigenschappen van een object naar een leesbaar XML-bestand te schrijven.
- JSON-serialisatie Gebruikt System.Text.Json of Newtonsoft.Json om lichtgewicht JSON te produceren, het meest voorkomende formaat voor web-API's.
- SOAP-serialisatie Formatteert gegevens als SOAP-berichten voor oudere webdiensten.
Een object serialiseren in C#
Laten we eens kijken naar een voorbeeld van hoe we dit kunnen bereiken.
In ons voorbeeld gaan we de onderstaande stappen op hoog niveau in de code uitvoeren
- Maak een klasse met de naam Tutorial die twee eigenschappen heeft, namelijk ID en Naam
- We zullen dan een object van de klasse maken en een waarde van “1” toewijzen aan de ID-eigenschap en een waarde van “.Net” aan de naam-eigenschap.
- Vervolgens zullen we serialisatie gebruiken om het bovenstaande object te serialiseren naar een bestand met de naam Voorbeeld.txt
- Ten slotte zullen we deserialisatie gebruiken om het object uit het bestand te deserialiseren en de waarden in de console weer te geven.
Voer de onderstaande code in het program.cs-bestand van de consoletoepassing in.
Stap 1) Voeg de klas toe.
De eerste stap is het toevoegen van de klasse die voor serialisatie zal worden gebruikt
Code Uitleg:-
- De klasse die moet worden geserialiseerd, moet het attribuut [Serializable] hebben. Dit is een trefwoord in C#. Dit trefwoord wordt vervolgens aan de klasse Tutorial gekoppeld. Als u dit attribuut niet vermeldt, krijgt u een foutmelding wanneer u probeert de klasse te serialiseren.
- Vervolgens volgt de definitie van de klasse die zal worden geserialiseerd. Hier definiëren we een klasse met de naam ‘Tutorial’ en bieden we twee eigenschappen aan, de ene is ‘ID’ en de andere is ‘Naam’.
Stap 2) Maak het object.
In deze stap maken we eerst het object van de klasse Tutorial en serialiseren we dit naar het bestand met de naam Voorbeeld.txt
Code Uitleg:-
- Eerst maken we een object van de klasse Tutorial. Vervolgens wijzen we de waarde “1” toe aan ID en “.net” aan de eigenschap name.
- Vervolgens gebruiken we de formatterklasse die wordt gebruikt om het object te serialiseren of naar een binair formaat te converteren. De gegevens in het bestand in serialisatie worden in binair formaat uitgevoerd. Vervolgens maken we een filestream-object. Het filestream-object wordt gebruikt om het bestand Voorbeeld.txt te openen voor schrijfdoeleinden. De trefwoorden FileMode.Create en FileMode.Write worden gebruikt om specifiek te vermelden dat het bestand moet worden geopend voor schrijfdoeleinden.
- Ten slotte gebruiken we de Serialize-methode om de binaire gegevens naar het bestand over te brengen. Vervolgens sluiten we de stream, sinds het schrijven operatie is compleet.
Stap 3) Gebruik deserialisatie.
Om er ten slotte voor te zorgen dat de gegevens in het bestand aanwezig zijn, gebruiken we deserialisatie om het object uit het bestand te deserialiseren.
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 Uitleg:-
- Wij creëren het object “stream” om het bestand Voorbeeld.txt te openen in de modus Alleen lezen.
- Vervolgens gebruiken we de formatterklasse die wordt gebruikt om het object te deserialiseren, dat is opgeslagen in het voorbeeld.txt-bestand. Het geretourneerde object wordt ingesteld op het object objnew.
- Ten slotte geven we de eigenschappen van het object “objnew” weer op de console met behulp van de eigenschappen “ID” en “name”.
Wanneer de bovenstaande code is ingesteld en het project wordt uitgevoerd met Visual Studio, krijgt u de onderstaande uitvoer.
Uitgang: -
Uit de bovenstaande uitvoer kunt u zien dat de waarden uit het bestand correct zijn gedeserialiseerd en in de console worden weergegeven.
JSON-serialisatie in C#
JSON is het meest gebruikte formaat voor moderne applicaties en web-API's. De ingebouwde System.Text.Json De namespace serialiseert en deserialiseert objecten met één enkele methodeaanroep, zoals hieronder wordt getoond.
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(); } } }
Output:
{"ID":1,"Name":".Net"}
.Net





