Serializacja i deserializacja w języku C# z przykładem
⚡ Inteligentne podsumowanie
Serializacja w C# konwertuje obiekt na strumień bajtów, dzięki czemu można go zapisać do pliku lub przesłać między aplikacjami; deserializacja odbudowuje obiekt. Tutaj nauczysz się serializować i deserializować obiekty na przykładach.

Serializacja i deserializacja w C#
Koncepcja serializacji i deserializacji jest stosowana zawsze, gdy dane dotyczące obiektów muszą zostać przesłane z jednej aplikacji do drugiej. Serializacja służy do eksportowania danych aplikacji do pliku. Aplikacja docelowa następnie używa deserializacji, aby np.tracdane z aplikacji do dalszego wykorzystania.
Serializacja to koncepcja, w której obiekty klasy C# są zapisywane lub serializowane do plików. Powiedzmy, że masz klasę C# o nazwie Tutorial. Klasa ma 2 właściwości: identyfikator i nazwę tutoriali.
Serializacji można użyć do bezpośredniego zapisania właściwości danych klasy Tutorial do pliku. Deserializacja służy do odczytania danych z pliku i ponownego skonstruowania obiektu Tutorial.
Typy serializacji w C#
Język C# obsługuje kilka formatów serializacji, a wybór zależy od miejsca, w którym dane będą wykorzystywane. Główne typy są wymienione poniżej.
- Serializacja binarna Konwertuje obiekt do kompaktowego strumienia binarnego. Jest szybki, ale nieczytelny dla człowieka i jest powiązany z platformą .NET.
- Serializacja XML używa klasy XmlSerializer do zapisu publicznych właściwości obiektu w czytelnym pliku XML.
- Serializacja JSON używa System.Text.Json lub Newtonsoft.Json do generowania lekkiego formatu JSON, najpopularniejszego formatu dla internetowych interfejsów API.
- Serializacja SOAP formatuje dane jako komunikaty SOAP dla starszych usług sieciowych.
Jak serializować obiekt w C#
Spójrzmy na przykład, jak możemy to osiągnąć.
W naszym przykładzie wykonamy poniższe kroki wysokiego poziomu w kodzie
- Utwórz klasę o nazwie Tutorial, która ma 2 właściwości, mianowicie ID i nazwę
- Następnie utworzymy obiekt z klasy i przypiszemy wartość „1” do właściwości ID i wartość „.Net” do właściwości name.
- Następnie użyjemy serializacji, aby serializować powyższy obiekt do pliku o nazwie Przykład.txt
- Na koniec użyjemy deserializacji do deserializacji obiektu z pliku i wyświetlenia wartości w konsoli.
Wpisz poniższy kod w pliku program.cs aplikacji konsolowej.
Krok 1) Dodaj klasę.
Pierwszym krokiem jest dodanie klasy, która będzie używana do serializacji
Code Wyjaśnienie:-
- Klasa, która ma zostać serializowana, musi mieć atrybut [Serializable]. To jest słowo kluczowe w języku C#. To słowo kluczowe jest następnie dołączane do klasy Tutorial. Jeśli nie wspomnisz o tym atrybucie, podczas próby serializacji klasy pojawi się błąd.
- Następna jest definicja klasy, która będzie serializowana. Tutaj definiujemy klasę o nazwie „Tutorial” i udostępniamy 2 właściwości, jedna to „ID”, a druga to „Nazwa”.
Krok 2) Utwórz obiekt.
W tym kroku najpierw utworzymy obiekt klasy Tutorial i serializujemy go do pliku o nazwie Przykład.txt
Code Wyjaśnienie:-
- Najpierw tworzymy obiekt klasy Tutorial. Następnie przypisujemy wartość „1” do identyfikatora i „.net” do właściwości name.
- Następnie używamy klasy formatter, która służy do serializacji lub konwersji obiektu do formatu binarnego. Dane w pliku w serializacji są wykonywane w formacie binarnym. Następnie tworzymy obiekt strumienia plików. Obiekt strumienia plików służy do otwierania pliku Przykład.txt w celu zapisu. Słowa kluczowe FileMode.Create i FileMode.Write służą do wyraźnej wzmianki o tym, że plik powinien zostać otwarty w celu zapisu.
- Na koniec używamy metody Serialize do przesłania danych binarnych do pliku. Następnie zamykamy strumień, od momentu zapisu działanie jest gotowy.
Krok 3) Użyj deserializacji.
Na koniec, aby mieć pewność, że dane znajdują się w pliku, używamy deserializacji w celu deserializacji obiektu z pliku.
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 Wyjaśnienie:-
- Tworzymy obiekt „strumień”, aby otworzyć plik Przykład.txt w trybie tylko do odczytu.
- Następnie używamy klasy formatter, która służy do deserializacji obiektu, który jest przechowywany w pliku Przykład.txt. Zwrócony obiekt jest ustawiany na obiekt objnew.
- Na koniec wyświetlamy na konsoli właściwości obiektu „objnew” za pomocą właściwości „ID” i „name”.
Gdy powyższy kod jest ustawiony, a projekt jest uruchamiany przy użyciu visual Studio, otrzymasz poniższe dane wyjściowe.
Wynik:-
Z powyższego wyniku widać, że wartości z pliku zostały poprawnie zdeserializowane i wyświetlone w konsoli.
Serializacja JSON w C#
JSON to najpopularniejszy format używany w nowoczesnych aplikacjach i interfejsach API internetowych. Wbudowany System.Text.Json przestrzeń nazw serializuje i deserializuje obiekty za pomocą jednego wywołania metody, jak pokazano poniżej.
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(); } } }
Wyjście:
{"ID":1,"Name":".Net"}
.Net




