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 #
| Proses | Arah | Hasil khas |
|---|---|---|
| Serialization | object menjadi aliran byte | string JSON, file XML, data biner |
| Deserialization | aliran byte menjadi object | object 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:
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:
{"Nama":"Kopi Gayo","Harga":45000}
Kopi Gayo - 45000Mari kita bedah baris demi baris:
- Baris 1 (
new ProdukJson ...): aplikasi membuat object di memori dengan propertiNamaberisiKopi GayodanHargaberisi45000. - Baris 3 (
Serialize(produk)): serializer membaca setiap properti public, lalu menuliskannya sebagai teks JSON yang disimpan di variabeljson. - Baris 6 (
Deserialize<ProdukJson>(json)): serializer membaca teks JSON, mencocokkan nama properti dengan tipeProdukJson, dan membuat object baru di memori. - Baris 7 (
Console.WriteLine ...): nilai object baru dicetak; nama dan harga sama seperti object awal, sehingga round-trip terbukti berhasil.