Szerializálás és deszerializálás C#-ban példával
⚡ Okos összefoglaló
A C#-ban a szerializálás egy objektumot bájtfolyammá alakít, így az fájlba menthető vagy alkalmazások között küldhető; a deszerializálás pedig újraépíti az objektumot. Itt példákon keresztül megtanulhatod az objektumok szerializálását és deszerializálását.
Sorozatosítás és deszerializálás C#-ban
A szerializálás és a deszerializálás fogalmát akkor használjuk, amikor objektumokra vonatkozó adatokat kell küldeni egyik alkalmazásból a másikba. A szerializálás az alkalmazásadatok fájlba exportálására szolgál. A célalkalmazás ezután deszerializálást használ a következőhöz:tracaz alkalmazásból származó adatokat további felhasználás céljából.
A szerializálás egy olyan fogalom, amelyben a C# osztályú objektumokat fájlba írják vagy szerializálják. Tegyük fel, hogy volt egy C# osztályod, a neve Tutorial. És az osztálynak 2 tulajdonsága van: ID és Tutorials név.
A sorozással közvetlenül egy fájlba írhatjuk a Tutorial osztály adattulajdonságait. A deszerializáció az adatok fájlból való kiolvasására és az oktatóanyag objektum újbóli létrehozására szolgál.
A szerializáció típusai C#-ban
A C# számos szerializációs formátumot támogat, és a választott formátumot az adatok felhasználási helye alapján választhatjuk ki. A főbb típusokat az alábbiakban soroljuk fel.
- Bináris szerializáció Egy objektumot kompakt bináris adatfolyammá alakít. Gyors, de nem ember által olvasható, és .NET-hez kötött.
- XML szerializálás az XmlSerializer osztályt használja egy objektum nyilvános tulajdonságainak olvasható XML fájlba írásához.
- JSON szerializáció A System.Text.Json vagy a Newtonsoft.Json fájlokat használja könnyűsúlyú JSON létrehozásához, amely a webes API-k leggyakoribb formátuma.
- SOAP szerializáció SOAP üzenetekként formázza az adatokat a régebbi webszolgáltatásokhoz.
Objektumok sorozatosítása C#-ban
Nézzünk egy példát arra, hogyan érhetjük el ezt.
Példánkban az alábbi magas szintű lépéseket fogjuk végrehajtani a kódban
- Hozzon létre egy Tutorial nevű osztályt, amelynek két tulajdonsága van, nevezetesen az azonosító és a név
- Ezután létrehozunk egy objektumot az osztályból, és „1” értéket rendelünk az ID tulajdonsághoz, és „.Net” értéket a név tulajdonsághoz.
- Ezután a szerializálást használjuk, hogy a fenti objektumot egy Példa.txt nevű fájlba szerializáljuk
- Végül a deserializációt használjuk az objektum szerializálására a fájlból, és megjelenítjük az értékeket a konzolban.
Írja be az alábbi kódot a konzolalkalmazás program.cs fájljába.
Step 1) Adja hozzá az osztályt.
Az első lépés a szerializáláshoz használt osztály hozzáadása
Code Magyarázat:-
- A szerializálandó osztálynak rendelkeznie kell a [Serializable] attribútummal. Ez egy kulcsszó a C#-ban. Ezt a kulcsszót ezután a Tutorial osztályhoz csatoljuk. Ha nem említi ezt az attribútumot, hibaüzenetet fog kapni, amikor megpróbálja szerializálni az osztályt.
- Következő a szerializálandó osztály meghatározása. Itt meghatározunk egy „Tutorial” nevű osztályt, és 2 tulajdonságot biztosítunk, az egyik az „ID”, a másik a „Név”.
Step 2) Hozd létre az objektumot.
Ebben a lépésben először létrehozzuk a Tutorial osztály objektumát, és szerializáljuk a Példa.txt nevű fájlba.
Code Magyarázat:-
- Először létrehozunk egy objektumot a Tutorial osztályból. Ezután az azonosítóhoz „1” értéket, a name tulajdonsághoz pedig „.net” értéket rendelünk.
- Ezután a formázó osztályt használjuk, amely az objektum szerializálására vagy bináris formátumra való konvertálására szolgál. A szerializált fájlban lévő adatok bináris formátumban történnek. Ezután létrehozunk egy fájlfolyam objektumot. A fájlfolyam objektum az Example.txt fájl megnyitására szolgál írási célokra. A FileMode.Create és FileMode.Write kulcsszavak kifejezetten megemlítik, hogy a fájlt írás céljából meg kell nyitni.
- Végül a Serialize metódust használjuk a bináris adatok fájlba átviteléhez. Ezután bezárjuk a patakot, az írás óta működés teljes.
Step 3) Használjon deserializációt.
Végül annak biztosítására, hogy az adatok jelen legyenek a fájlban, deszerializálást használunk az objektum deszerializálására a fájlból.
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 Magyarázat:-
- Létrehozzuk az objektumot"folyam” a Példa.txt fájl csak olvasható módban való megnyitásához.
- Ezután a formázó osztályt használjuk, amely az objektum deszerializálására szolgál, és amely az Example.txt fájlban van tárolva. A visszaadott objektum az objnew objektumra van állítva.
- Végül megjelenítjük az „objnew” objektum tulajdonságait a konzolon az „ID” és „name” tulajdonságok használatával.
Ha a fenti kód be van állítva, és a projekt a használatával fut Visual Studio, akkor az alábbi kimenetet kapja.
Kimenet:-
A fenti kimenetből láthatja, hogy a fájlból származó értékek megfelelően lettek deszerializálva, és megjelentek a konzolban.
JSON szerializáció C#-ban
A JSON a legszélesebb körben használt formátum a modern alkalmazásokhoz és webes API-khoz. A beépített System.Text.Json A namespace egyetlen metódushívással szerializálja és deszerializálja az objektumokat, az alábbiak szerint.
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





