JSON ke Kelas C#
Masukkan contoh JSON untuk mendapatkan kelas POCO dalam bahasa C# yang siap digunakan dalam berkas .cs. Alat ini memilih tipe data yang tepat, menangani objek terstruktur dengan definisi kelas tambahan, mendukung tipe referensi yang dapat bernilai null, serta menghasilkan atribut System.Text.Json atau Newtonsoft.Json tergantung pada proyek Anda.
Cara Mengonversi JSON ke C#
-
1
Lampirkan JSON
Satu sampel saja sudah cukup. Penggunaan beberapa sampel dapat meningkatkan kemampuan inferensi untuk nilai yang tidak pasti (nullable) dan elemen dalam array.
-
2
Pilih gaya
System.Text.Json (.NET 6+) atau Newtonsoft.Json (versi lama). Nama properti PascalCase yang menggunakan `[JsonPropertyName]` untuk format JSON camelCase.
-
3
Pilih versi C# target
C# 10+ untuk namespace yang berlaku pada level rekaman dan file; C# 8 untuk tipe referensi nullable; atau versi sebelumnya untuk kompatibilitas maksimal.
-
4
Salin kelas-kelas tersebut
Satu kelas akar ditambah kelas terstruktur untuk setiap bentuk objek, semuanya tersedia dalam satu file yang siap digunakan langsung dalam proyek Anda.
Contoh hasil eksekusi
Untuk masukan:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
Keluaran System.Text.Json (C# 10+):
public class User
{
[JsonPropertyName("firstName")]
public string FirstName { get; set; } = default!;
[JsonPropertyName("age")]
public int Age { get; set; }
[JsonPropertyName("emails")]
public List<string> Emails { get; set; } = new();
[JsonPropertyName("address")]
public Address Address { get; set; } = default!;
}
public class Address
{
[JsonPropertyName("city")]
public string City { get; set; } = default!;
}
Pemetaan Tipe
| JSON | Tipe C# |
|---|---|
| string | string |
| integer | int (atau long untuk nilai yang melebihi batas maksimum integer) |
| nomor (desimal) | double (atau decimal jika diaktifkan) |
| boolean | bool |
| null | object? (atau digabungkan dengan data saudara) |
| Tanggal ISO-8601 | DateTime (atau DateOnly) |
| String berbentuk GUID | Guid |
| deretan string | List<string> |
| objek | kelas bersarang |
Opsi atribut
- System.Text.Json (
[JsonPropertyName("foo")]), lebih disarankan untuk .NET 6+ dan proyek-proyek baru. - Newtonsoft.Json (
[JsonProperty("foo")]), digunakan untuk proyek lama atau ketika Anda memerlukan fitur khusus Newtonsoft. - Tidak ada, nama properti sesuai persis dengan kunci JSON (hanya berlaku jika kunci JSON sudah menggunakan format PascalCase).
Kesalahan Umum
- Gunakan
intuntuk bidang yang berpotensi melebihi batas nilai. Jika JSON Anda mengandung nilai yang melebihi batasint.MaxValue, gunakanlong. Generator akan secara otomatis beralih ke formatlongketika mendeteksi nilai yang besar. [JsonIgnore]tidak tersedia untuk properti komputasi. Jika Anda menambahkan properti bantu ke kelas yang dihasilkan, hiasi properti tersebut dengan[JsonIgnore]; jika tidak, properti tersebut akan diserialisasi saat proses penghasilan kelas selesai. – Mengabaikan proses pemrosesan data yang tidak bergantung pada konteks budaya (culture-invariant parsing). Field daridecimalseharusnya dideserialisasi menggunakanCultureInfo.InvariantCulture; hal ini dilakukan secara default oleh System.Text.Json dan juga oleh Newtonsoft dengan pengaturan global.- Mengandalkan generator hanya dengan satu sampel. Kemampuan untuk menghasilkan nilai nol (nullability) dan tipe elemen array diperkirakan berdasarkan data yang dilihatnya. Selalu lakukan pemeriksaan keabsahan terhadap anotasi
nullablesesuai dengan perilaku API yang sebenarnya.
Pertanyaan yang Sering Diajukan
Untuk proyek baru yang menggunakan .NET 6+ atau versi lebih tinggi, gunakan System.Text.Json, fitur ini lebih cepat, sudah terintegrasi secara bawaan, dan kini mendukung hampir semua fitur yang tersedia di Newtonsoft. Gunakan Newtonsoft untuk proyek lama atau ketika Anda memerlukan fitur-fitur khususnya (seperti resolver kontrak kustom, JObject, serta penanganan dinamis).
Dalam C# 10+, rekaman sangat cocok digunakan untuk DTO yang tidak dapat diubah, karena memberikan kesetaraan nilai dan sintaks yang ringkas. Kelas lebih ideal ketika diperlukan kemampuan untuk melakukan modifikasi atau kompatibilitas dengan sistem lama. Alat ini memungkinkan Anda memilih salah satu dari keduanya.
Jika proyek Anda menggunakan tipe referensi yang dapat bernilai nol (C# 8+), bidang yang terdeteksi bernilai nol dalam setiap sampel akan diberi label string?, int?, dan sebagainya. Tanpa fitur NRT, kemungkinan nilai menjadi nol hanya ditandai untuk tipe nilai saja (misalnya int?).
Array campuran dengan berbagai bentuk objek tidak dapat direpresentasikan secara langsung dalam C# yang bertipe kuat. Alat ini akan menyimpulkan kelas dasar umum atau (sebagai cadangan) object; untuk array campuran, biasanya diperlukan perancangan ulang struktur JSON-nya.
Alat Terkait
Referensi Tabel ASCII
Tabel ASCII lengkap dari 0 sampai 127 dengan desimal, heksadesimal, oktal, biner, dan referensi karakter numerik HTML untuk setiap karakter, termasuk kode kontrol seperti NUL, LF, dan DEL.
Referensi Karakter HTML
Daftar entitas HTML yang dapat dicari, beserta kode bernama dan kode numeriknya, serta fitur salin dengan satu klik untuk karakter khusus dan simbol.
Referensi pintasan papan ketik
Cari pintasan bawaan terdokumentasi untuk VS Code, Chrome, dan Bash dengan GNU Readline di macOS, Windows, dan Linux.
Pemformat HTML
Format HTML secara lokal di browser dengan inden dua atau empat spasi. HTML tidak diunggah atau divalidasi.
Generator EditorConfig
Buat file .editorconfig dengan gaya dan ukuran indentasi, akhir baris, charset, dan aturan spasi Anda untuk format yang konsisten di berbagai IDE dan editor.
Validator Email
Validasi alamat email: pemeriksaan sintaks RFC 5322, pengecekan live record MX, serta detail bagian lokal, domain, dan panjang. Tidak ada email yang dikirim.
Alat ini tersedia dalam bahasa lain
- Từ JSON đến lớp C# [VI]
- JSON a Clase C# [ES]
- JSON para Classe C# [PT]
- JSON till C#-klass [SV]
- تحويل JSON إلى فئة C# [AR]
- JSONからC#クラスへ [JA]
- JSON ถึงคลาสใน C# [TH]
- JSON zu C# Klasse [DE]
- JSON을 C# 클래스로 [KO]
- JSON naar C#-klasse [NL]
- JSON vers classe C# [FR]
- JSON na klasę C# [PL]
- 从 JSON 到 C# 类 [ZH]
- JSON to C# Class [EN]
- JSON in classe C# [IT]
- JSON в класс C# [RU]
- JSON'ten C# Sınıfına [TR]