Dulu pengembang .NET hampir selalu menambahkan library pihak ketiga seperti Newtonsoft.Json untuk mengolah JSON. Sejak .NET Core 3.0, platform menyertakan serializer resmi bernama System.Text.Json. Pada .NET 9, namespace ini sudah tersedia di setiap project tanpa instalasi NuGet tambahan, sehingga cukup menulis using System.Text.Json dan seluruh API dapat langsung dipakai.

Tiga Kelompok API #

APIPeranCocok untuk
JsonSerializerMemetakan class ke JSON dan sebaliknyaKontrak data yang tipenya jelas
JsonDocumentMembaca JSON menjadi pohon node read-onlyPayload dinamis tanpa class
Utf8JsonWriter / Utf8JsonReaderMenulis dan membaca token JSON secara streamingPayload besar dan jalur kritis kinerja

Bab ini memperkenalkan kelompok kedua; bab-bab berikutnya memakai JsonSerializer secara mendalam, sedangkan kelompok streaming cukup kita kenali dulu.

Membaca JSON Tanpa Class #

Kadang kita hanya perlu mengambil dua nilai dari payload tanpa mendefinisikan class. JsonDocument menyelesaikan kebutuhan tersebut:

csharp
string json = """{"nama":"Budi","umur":25}""";

using JsonDocument dokumen = JsonDocument.Parse(json);
JsonElement akar = dokumen.RootElement;

Console.WriteLine(akar.GetProperty("nama").GetString());
Console.WriteLine(akar.GetProperty("umur").GetInt32());

Output yang Dihasilkan:

text
Budi
25

Mari kita bedah baris demi baris:

  1. Baris 1 (string json = """..."""): raw string literal C# 11 menyimpan payload JSON tanpa perlu menggandakan tanda kutip.
  2. Baris 3 (JsonDocument.Parse(json)): parser memindai teks JSON dan menyusun pohon node di memori; kata kunci using memastikan memori yang dipinjam dikembalikan segera.
  3. Baris 4 (RootElement): variabel akar menunjuk node paling luar, dalam contoh ini sebuah object JSON.
  4. Baris 6-7 (GetProperty ...): method GetProperty mengambil node bernama nama dan umur, lalu GetString dan GetInt32 membaca nilainya sesuai tipe masing-masing.