Object Produk yang kita buat di C# hidup di memori dengan bentuk yang hanya dipahami runtime .NET: alamat referensi, metadata tipe, dan nilai field. Begitu aplikasi harus mengirim data ke web API, menyimpannya ke file, atau menuliskannya ke antrean pesan, object tersebut tidak dapat dikirim apa adanya. Serialization menjembatani kebutuhan ini dengan mengubah object menjadi urutan byte dalam format standar seperti JSON, XML, atau format biner; deserialization melakukan kebalikannya.

Dua Arah yang Saling Melengkapi #

ProsesArahHasil khas
Serializationobject menjadi aliran bytestring JSON, file XML, data biner
Deserializationaliran byte menjadi objectobject dengan nilai yang sama

Rangkaian dua arah ini sering disebut round-trip: object hasil deserialization harus membawa nilai yang sama dengan object sebelum serialization. Keandalan round-trip menjadi ukuran utama sebuah serializer.

Contoh Round-Trip JSON #

Contoh berikut menggunakan JsonSerializer dari namespace System.Text.Json:

csharp
var produk = new ProdukJson { Nama = "Kopi Gayo", Harga = 45000 };

string json = JsonSerializer.Serialize(produk);
Console.WriteLine(json);

ProdukJson hasil = JsonSerializer.Deserialize<ProdukJson>(json);
Console.WriteLine($"{hasil.Nama} - {hasil.Harga}");

Output yang Dihasilkan:

text
{"Nama":"Kopi Gayo","Harga":45000}
Kopi Gayo - 45000

Mari kita bedah baris demi baris:

  1. Baris 1 (new ProdukJson ...): aplikasi membuat object di memori dengan properti Nama berisi Kopi Gayo dan Harga berisi 45000.
  2. Baris 3 (Serialize(produk)): serializer membaca setiap properti public, lalu menuliskannya sebagai teks JSON yang disimpan di variabel json.
  3. Baris 6 (Deserialize<ProdukJson>(json)): serializer membaca teks JSON, mencocokkan nama properti dengan tipe ProdukJson, dan membuat object baru di memori.
  4. Baris 7 (Console.WriteLine ...): nilai object baru dicetak; nama dan harga sama seperti object awal, sehingga round-trip terbukti berhasil.