JSON'ten C# Sınıfına
Bir JSON örneğini yapıştırın ve .cs dosyasına yerleştirilebilecek C# POCO sınıflarını elde edin. Uygun veri türlerini seçer, ek sınıf tanımları içeren iç içe yerleştirilmiş nesneleri işler, boş değerli referans türlerini destekler ve projeye göre System.Text.Json veya Newtonsoft.Json atributlarını üretir.
JSON'ı C#'a nasıl dönüştürürsünüz?
-
1
JSON'u yapıştırın
Bir örnek yeterlidir. Birden fazla örnek, null değerlerin ve dizi öğelerinin tahminini iyileştirir.
-
2
Stili seçin
System.Text.Json (.NET 6+) veya Newtonsoft.Json (eski). camelCase JSON için `[JsonPropertyName]` özniteliğiyle belirtilen PascalCase özellik adları.
-
3
Hedef C# sürümünü seçin
Kayıtlar ve dosya düzeyindeki ad alanları için C# 10+, boş değer alabilen referans türleri için C# 8 veya en yüksek uyumluluk için daha eski sürümler kullanılır.
-
4
Sınıfları kopyalayın
Bir temel sınıf ve her nesne şekli için iç içe yerleştirilmiş sınıflar; hepsi tek bir dosyada bulunur ve projenize kolayca eklenmek üzere hazırlanmıştır.
Örnek Çıkış
Giriş için:
{ "firstName": "Alice", "age": 30, "emails": ["a@a.com"], "address": { "city": "Madrid" } }
System.Text.Json çıktısı (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!;
}
Tür Haritalaması
| JSON | C# tipi |
|---|---|
| karakter dizisi | string |
| tam sayı | int (veya int.MaxValue üstündeki değerler için long) |
| sayı (ondalık) | double (veya seçilirse decimal) |
| mantıksal değer | bool |
| null | object? (veya komşu alanla birleştirilir) |
| ISO-8601 tarihi | DateTime (veya DateOnly) |
| GUID biçiminde karakter dizisi | Guid |
| karakter dizisi dizisi | List<string> |
| nesne | İç içe sınıf |
Öznitelik seçenekleri
- System.Text.Json (
[JsonPropertyName("foo")]). NET 6+ ve yeni projeler için tercih edilir. - Newtonsoft.Json (
[JsonProperty("foo")]), eski projeler için veya Newtonsoft’a özgü özelliklere ihtiyaç duyulduğunda kullanılır. - Yok, özellik adları JSON anahtarlarıyla tam olarak eşleşir (yalnızca JSON anahtarları zaten PascalCase ise geçerlidir).
Yaygın Hatalar
- Taşabilecek bir alan için
intkullanmak. JSON’unuzdaki değerlerint.MaxValue’yi aşıyorsalongkullanın. Jeneratör büyük değerleri gördüğünde türü otomatik olarak yükseltir. - Hesaplanan özellikler için
[JsonIgnore]eksik. Üretilen sınıfa yardımcı özellikler eklerseniz, bunları[JsonIgnore]ile belirleyin; aksi takdirde serielleştirme işlemi sırasında bu özellikler silinecektir. - Kültüre bağımsız analizi unutmak:
decimalalanlarıCultureInfo.InvariantCultureile deserialize edilmelidir; System.Text.Json bunu varsayılan olarak yapar, Newtonsoft ise küresel ayarlar kullanılarak bu işlemi gerçekleştirir. - Tek bir örnekle jeneratöre güvenmek. Boş değer alabilirlik ve dizi öğesi türleri, jeneratörün gördüğü verilerden tahmin edilir. Boş değer alabilirlik ek açıklamalarının makul olup olmadığını her zaman gerçek API davranışınızla karşılaştırarak kontrol edin.
Sık Sorulan Sorular
.NET 6+ üzerindeki yeni projeler için System.Text.Json’yi kullanın; daha hızlıdır, dahili bir komponenttir ve artık Newtonsoft’un neredeyse tüm özelliklerini destekler. Eski projelerde veya özel özelliklere ihtiyaç duyulduğunda (özel sözleşme çözücüler, JObject, dinamik işleme) ise Newtonsoft’u tercih edin.
Kayıtlar, C# 10+‘da değişmez DTO’lar için idealdir; değer eşitliği ve özlü bir sentaks sunar. Sınıflar ise değişiklik yapma veya eski sistemlerle uyumluluk gereken durumlarda daha uygundur. Bu araç, her iki seçeneği de kullanmanıza olanak tanır.
Eğer projeniz Nullable Reference Types (NRT) kullanıyorsa (C# 8+), herhangi bir örnekte null olarak gözlemlenen alanlar string?, int? vb. olur. NRT kullanılmadığında ise nullabilite yalnızca değer tipleri için belirtilir (örneğin int?).
Farklı nesne şekillerinden oluşan karmaşık diziler, güçlü tipli C#’de doğrudan temsil edilemez. Bu araç, ortak bir temel sınıf veya (yedek) object türü belirler; karmaşık diziler için genellikle JSON yapısını yeniden tasarlamak gerekir.
İlgili Araçlar
ASCII Tablosu Referansı
NUL, LF ve DEL dahil her kod için ondalık, onaltılık, sekizlik ve ikili değerlerle HTML sayısal karakter başvurusu gösterimini sunan tam ASCII tablosu.
HTML Karakter Referansı
HTML varlıklarının aranabilir listesi; adlandırılmış ve sayısal kodlarıyla birlikte özel karakter ve semboller için tek tıkla kopyalama.
FPS Sayacı
requestAnimationFrame ile tarayıcı FPS değerini ölçün: yumuşatma, en düşük ve en yüksek kare hızı, uyarı eşiği ve isteğe bağlı grafik. Yerel çalışır, yükleme ve API yoktur.
Klavye kısayolları başvurusu
macOS, Windows ve Linux’ta VS Code, Chrome ve GNU Readline kullanan Bash için belgelenmiş varsayılan kısayolları arayın.
EditorConfig Oluşturucu
Girinti stili ve boyutu, satır sonu, karakter kümesi ve boşluk kurallarınızla bir .editorconfig dosyası oluşturarak IDE ve editörler arasında tutarlı biçimlendirme sağlayın.
E-posta Doğrulayıcı
Bir e-posta adresini doğrulayın: RFC 5322 sözdizimi kontrolü, canlı MX kaydı sorgulama, ayrıca yerel kısım, alan adı ve uzunluk bilgileri. Hiçbir e-posta gönderilmez.
Araç diğer dillerde mevcuttur
- Từ JSON đến lớp C# [VI]
- JSON zu C# Klasse [DE]
- JSON para Classe C# [PT]
- JSON을 C# 클래스로 [KO]
- JSON ถึงคลาสใน C# [TH]
- تحويل JSON إلى فئة C# [AR]
- JSON till C#-klass [SV]
- JSON naar C#-klasse [NL]
- JSON vers classe C# [FR]
- JSON ke Kelas C# [ID]
- JSONからC#クラスへ [JA]
- JSON na klasę C# [PL]
- JSON a Clase C# [ES]
- JSON to C# Class [EN]
- JSON in classe C# [IT]
- JSON в класс C# [RU]
- 从 JSON 到 C# 类 [ZH]