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
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.
Webpack Yapılandırma Oluşturucu
Kısa bir formdan webpack 5 için bir webpack.config.js oluşturun: entry, çıkış klasörü ve modu ayarlayın; ardından TypeScript, Babel, bir CSS yükleyici, HtmlWebpackPlugin ve bir dev sunucu açın.
Dosya Boyutu Dönüştürücü
Bayt, KB, MB, GB, TB ve ikili IEC birimleri (KiB, MiB, GiB, TiB) arasında, ondalık ve ikiliyi dilediğiniz gibi birleştirerek dönüşüm yapın.
Kurgusal telefon numarası oluşturucu
Beş ülkede resmen ayrılmış aralıklardan 50 adede kadar kurgusal numara üretin.
Telefon numarası doğrulayıcı
Telefon numarasının ülkeye göre yapısını denetleyin; bölge, tür, E.164, uluslararası, ulusal ve RFC 3966 biçimlerini görün.
Rastgele adres oluşturucu
Arayüz maketleri ve testler için üç basitleştirilmiş biçimde 1–20 adres benzeri kayıt oluşturun.
Araç diğer dillerde mevcuttur
- JSON vers classe C# [FR]
- Từ JSON đến lớp C# [VI]
- JSON till C#-klass [SV]
- JSONからC#クラスへ [JA]
- JSON na klasę C# [PL]
- JSON a Clase C# [ES]
- JSON naar C#-klasse [NL]
- JSON para Classe C# [PT]
- JSON ถึงคลาสใน C# [TH]
- JSON ke Kelas C# [ID]
- JSON을 C# 클래스로 [KO]
- تحويل JSON إلى فئة C# [AR]
- JSON zu C# Klasse [DE]
- JSON to C# Class [EN]
- JSON in classe C# [IT]
- JSON в класс C# [RU]
- 从 JSON 到 C# 类 [ZH]