İçeriğe atla
%100 yerel

JSON'dan Dart Sınıfına

JSON örneğinden Dart sınıfı oluşturun fromJson, toJson ve iç içe modeller ile.

Giriş
Çıkış

JSON'dan Dart Sınıfına

JSON örneğini yapıştırın ve bu araç verilerin şeklini çıkarır ve eşleşen bir Dart sınıfı oluşturur — aksi takdirde Flutter modeli için el ile yazacağınız türde. İç içe nesneler kendi sınıfları haline gelir, diziler yazılan `List<...>` alanları haline gelir ve her sınıf adlandırılmış bir yapıcı, bir `fromJson` fabrikası ve bir `toJson` yöntemi ile birlikte gelir, böylece sonuç doğrudan bir Flutter veya Dart projesine yerleştirilebilir.

Seçenekler oluşturulan kodun stilini kontrol eder. "Sınıf Adı" kök sınıfı ayarlar; iç içe sınıflar, onları tanıtan JSON anahtarının adı alırlar. "Gerekli alanlarla null güvenliği" her örnekte bulunan alanları `required` ile işaretler ve nulllanamayan bir tür alırlar, bazen eksik veya boş olan alanlar nulllanabilir ve opsiyonel hale gelirler — tutarsız API yanıtlarına karşı daha hoşgörülü olmak için kapatın ve tüm alanları nulllanabilir hale getirin. "json_serializable ek açıklamaları" el ile yazılan `fromJson`/`toJson` gövdelerinden `@JsonSerializable()` ve `@JsonKey` ek açıklamalarına geçer ve bu paketi ve build_runner'ı zaten kullanan projeler için oluşturulan `.g.dart` bir parça dosyasına devreder. "Sabit Alanlar" sınıfı değişmez hale getirir; "copyWith Oluştur" orijinali mutasyona uğratmadan değiştirilmiş bir kopya oluşturmak için bir yöntem ekler ve "== ve hashCode Oluştur" değer eşitliği ekler, böylece aynı alan değerlerine sahip iki örnek eşit karşılaştırılır. "Girinti" oluşturulan kodu 2 ve 4 boşluk arasında değiştirir.

Aynı nesne şekli tekrarlanıyorsa — örneğin, tüm öğelerin aynı alanlara sahip olduğu bir nesneler dizisi — araç, her oluşum için bir kopya oluşturmak yerine bir sınıfı yeniden kullanır ve bir dizinin bazı girişlerinde yalnızca eksik olan bir alan, gerekli yerine opsiyonel olarak doğru şekilde çıkarılır. Geçerli Dart tanımlayıcıları olmayan, farklı harf durumları kullanan veya bir anahtar kelime veya oluşturulan bir yöntem adı (örneğin `copyWith` veya `hashCode`) ile çakışan JSON anahtarları, orijinal anahtar kodlama ve kod çözme için korunurken Dart tarafında otomatik olarak yeniden adlandırılır.

Her şey yerel olarak tarayıcınızda çalışır: JSON örneğiniz hiçbir yere asla yüklenilmez, bu da gerçek kullanıcı verilerini veya bir iç API'nin yanıt şeklini içeriyorsa önemlidir. Sınıfı kopyalayın, .txt dosyası olarak indirin veya çıktıyı giriş içine gönderin ve iç içe bir parçayı daha fazla dönüştürün.

FAQ

İç içe nesneler ve diziler nasıl işlenir?
Her iç içe nesne, onu tanıtan alanın adına göre adlandırılan kendi Dart sınıfı haline gelir ve aynı şekle sahip nesnelerin bir dizisi, yazılan bir List<YourClass> haline gelir. Eğer aynı şekil birden fazla kez görünürse, araç bir kopya oluşturmak yerine tek bir sınıfı yeniden kullanır.
"Gerekli alanlarla null güvenliği" aslında ne değiştirir?
Açık olduğunda, aracın her örnekte gördüğü bir alan nulllanamayan bir tür ve bir `required` yapıcı parametresi alır; bazen eksik veya boş olan bir alan nulllanabilir bir tür alır ve `required` anahtar sözcüğü olmaz. Kapatmak her alanı nulllanabilir ve opsiyonel hale getirir, bu da yanıtları değişen API'lere karşı daha hoşgörülüdür.
json_serializable paketine ihtiyacım var mı?
Yalnızca "json_serializable ek açıklamaları" seçeneğini açarsanız, @JsonSerializable()/@JsonKey ek açıklamalarını ve build_runner tarafından oluşturulan bir `.g.dart` dosyasını bekleyen bir parça yönergesini yayınlar. Kapatın ve araç bunun yerine düz, bağımlılıksız fromJson/toJson yöntemleri yazar.
Sayısal bir alanın türünü doğru bir şekilde çıkarabilir mi?
Evet. Her zaman bir tam sayı olan bir alan int olacaktır; herhangi bir örnek değerin ondalık noktası varsa, hiçbir değer kesilmemek için tüm alan double olarak genişletilir.
JSON örneğim herhangi bir yere yükleniyor mu?
Hayır. Sınıf tamamen tarayıcınızda oluşturulur — JSON örneğiniz hiçbir zaman cihazınızı terk etmez.