Co to jest serializacja i deserializacja? Przykład w języku C#

Co to jest serializacja?

W prostych słowach Serializacja to proces w którym obiekt, czasami bardzo skomplikowany, w języku C# zamieniamy na tekst (zwykle w postaci JSON albo XML). Robimy to po to, żeby na przykład zapisać dany obiekt w bazie danych, lub przesłać go do innego systemu. Łatwiej jest przecież wysłać jeden napis, niż obiekt składający się z wielu pól a czasami również tablic.

Co to jest deserializacja?

Deserializacja jest procesem odwrotnym do serializacji. Wyobraź sobie, że ktoś Tobie przesłał z zewnętrznego systemu obiekt w postaci JSON. Czyli mamy jeden długi napis zawierający wszystkie informacje o obiekcie. A docelowo, żeby wykonać operacje w naszym systemie potrzebujemy obiektu. Używamy wtedy właśnie deserializacji.

Przykład deserializacji języku C#



using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;

namespace Serializacja
{
    class Program
    {
        static void Main(string[] args)
        {
            string test = "[{\"identyfikator\":\"1\",\"imie\":\"Dariusz\",\"nazwisko\":\"Kacban\"}]";
            var deserialized = JsonConvert.DeserializeObject<List<Person>>(test);

            Console.WriteLine(deserialized.First());
        }
    }

    public class Person
    {
        [JsonProperty("identyfikator")]
        public string Id { get; set; }
    
        [JsonProperty("imie")]
        public string Name { get; set; }
        
        [JsonProperty("nazwisko")]
        public string Surname { get; set; }

        public override string ToString()
        {
            return $"identyfikator: {Id}, imie: {Name}, nazwisko: {Surname}";
        }
    }
}