Data JSON umumnya datang dari luar aplikasi: respons API, file konfigurasi, atau pesan antrean. Method JsonSerializer.Deserialize<T> mengubah teks tersebut menjadi object bertipe T. Pekerjaan utama deserializer adalah mencocokkan nama anggota JSON dengan nama properti class, dan pencocokan ini bersifat sensitif huruf besar-kecil secara default. Nilai yang tidak cocok tidak memicu galat, sehingga kita harus memahami perilakunya sebelum memasangnya di jalur produksi.

Pencocokan Nama Properti #

Kebanyakan API web mengirim JSON dengan gaya camelCase, sementara properti class C# lazim ditulis PascalCase. Contoh berikut memperlihatkan akibat perbedaan gaya tersebut pada class ProdukJson yang sama:

csharp
string jsonCamel = """{"nama":"Kopi Gayo","harga":45000}""";
ProdukJson camel = JsonSerializer.Deserialize<ProdukJson>(jsonCamel);
Console.WriteLine($"camelCase  -> Nama='{camel.Nama}', Harga={camel.Harga}");

string jsonPascal = """{"Nama":"Kopi Gayo","Harga":45000}""";
ProdukJson pascal = JsonSerializer.Deserialize<ProdukJson>(jsonPascal);
Console.WriteLine($"PascalCase -> Nama='{pascal.Nama}', Harga={pascal.Harga}");

Output yang Dihasilkan:

text
camelCase  -> Nama='', Harga=0
PascalCase -> Nama='Kopi Gayo', Harga=45000

Mari kita bedah hasil di atas:

  1. JSON camelCase: deserializer mencari properti bernama nama persis; class ProdukJson hanya punya Nama, sehingga pencocokan gagal dan properti memakai nilai default "" serta 0.
  2. JSON PascalCase: nama anggota JSON identik dengan nama properti class, sehingga kedua nilai terisi penuh.
  3. Tanpa exception: kegagalan pencocokan tidak melempar galat; deserializer melanjutkan dengan diam-diam, dan bug jenis ini baru terasa ketika data hilang di lapisan bisnis.