JSON'dan Dart'a Dönüştürücü
Bir JSON nesnesinden veya örnek nesne dizisinden ek bağımlılık gerektirmeyen Dart model sınıfları üretin. Dönüştürücü dizideki tüm örnekleri birleştirir, iç içe sınıflar oluşturur, özgün JSON anahtarlarını korur ve factory fromJson kurucusuyla birlikte null güvenli alan türlerini belirler. jsonEncode ile uyumlu çıktı gerekiyorsa toJson metotlarını ekleyebilirsiniz. Örnek ve üretilen kod bu tarayıcıda kalır; hiçbir zaman yüklenmez veya URL’ye eklenmez.
Nasıl çalışır
-
1
Temsilî bir örnek yapıştırın
Bir JSON nesnesi veya nesne dizisi kullanın. Birden fazla öğe eksik, nullable ve farklı türdeki alanları ortaya çıkarır.
-
2
Dart seçeneklerini belirleyin
Kök sınıfa ad verin, tüm alanların nullable olup olmayacağını seçin ve gerekiyorsa toJson metotlarını ekleyin.
-
3
İnceleyin ve dışa aktarın
Belirlenen sınıfları kontrol edin, ardından kodu kopyalayın veya yerel bir models.dart dosyası indirin.
JSON, null güvenli Dart modellerine nasıl dönüşür?
Resmî dart:convert belgeleri, jsonDecode() metodunun sayılar, dizgeler, boolean değerler, null, listeler ve dize anahtarlı map’ler gibi JSON ile uyumlu değerler ürettiğini açıklar. Bir model sınıfı doğrudan JSON olarak kodlanamaz, ancak jsonEncode() sınıfın toJson() metodunu çağırabilir. Bu dönüştürücü, json_serializable açıklama ekleri veya paket bağımlılıkları eklemeden söz konusu manuel serileştirme kalıbını üretir.
Örneğin iç içe adresi olan bir kullanıcı bulunduğunu düşünün. Üretilen User sınıfı final alanlara ve adlandırılmış parametreli bir kurucuya sahiptir. User.fromJson(Map<String, Object?> json) skaler değerlerin türünü dönüştürür ve iç içe nesne için UserAddress.fromJson() metodunu çağırır. address incelenen nesnelerin herhangi birinde yoksa veya null ise türü UserAddress? olur ve factory, nesneyi oluşturmadan önce değeri denetler. toJson etkin olduğunda iç içe modeller, jsonEncode() tarafından kabul edilen map’lere özyinelemeli olarak dönüştürülür.
| JSON’da gözlemlenen değer | Üretilen Dart türü |
|---|---|
| Tam sayı | int |
| Ondalık sayı | double |
| Tam sayı ve ondalık örnekleri | num |
| Metin | String |
| Boolean değer | bool |
| İç içe nesne | Üretilen model sınıfı |
| Tutarlı dizi | List<T> |
| Boş veya uyumsuz iç içe dizi | List<Object?> |
| Yalnızca null veya çelişen değerler | Object? |
Dönüştürücü yalnızca ilk öğeye güvenmek yerine kök dizideki her nesneyi inceler. Bir alan herhangi bir öğede eksikse veya açıkça null ise nullable olur. Gerçek API örnekten daha öngörülemez olduğunda tüm alanları nullable da yapabilirsiniz. Dart null safety kılavuzu, türlerin varsayılan olarak nullable olmadığını ve null kabul etmeleri için ? gerektiğini belirtir.
Tanımlayıcıların işlenmesi ve çıkarım sınırları
JSON anahtarlarının geçerli Dart üyeleri olması gerekmez. Noktalama işaretleri kaldırılır, sözcükler lowerCamelCase biçimine dönüştürülür, ayrılmış sözcüklere güvenli bir sonek ve çakışmalara belirli sayısal sonekler eklenir. Özgün anahtar json['original-key'] içinde ve toJson() map’inde değişmeden kalır. İç içe sınıf adları tam yollarını kullanır; böylece birbirinden bağımsız adres nesneleri yanlışlıkla tek sınıfta birleşmez.
Tek bir örnek API sözleşmesini kanıtlayamaz. JSON dizgeleri kendiliğinden tarih, UUID veya enum değildir; boş bir dizi de öğe türünü göstermez. Yinelenen üye adları güvenilir biçimde gidiş dönüş yapamaz, çünkü JSON ayrıştırıcıları çoğunlukla son değeri korur. Modelleri üretimde kullanmadan önce API belgeleri veya şemasıyla karşılaştırın. Girdi, derinlik, çıkarılan bildirim ve çıktı sınırları tarayıcıdaki işlemi denetim altında tutar.
Sık Sorulan Sorular
Hayır. Ayrıştırma, çıkarım, kod üretme, kopyalama ve indirme tarayıcıda gerçekleşir. JSON ve Dart kodu sunucularımıza gönderilmez veya URL’ye yerleştirilmez.
Evet. Flutter, Dart kullanır; dolayısıyla bağımlılık gerektirmeyen bu sınıflar bir Flutter projesinde kullanılabilir. Önce belirlenen türleri gerçek API sözleşmesiyle karşılaştırın.
Hayır. Araç, paket veya build_runner bağımlılığı olmadan manuel fromJson ve isteğe bağlı toJson metotları üretir.
Null olarak görülen veya bir örnekte bulunmayan alan nullable olur. Örnek temsilî değilse üretilen tüm alanları nullable yapabilirsiniz.
Hayır. Sonuç yalnızca gözlemlenen değerleri yansıtır. Birden fazla örnek nesne kullanın ve sonucu sağlayıcının şeması veya belgeleriyle karşılaştırın.
İ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
- Trình chuyển JSON sang Dart [VI]
- JSON-in-Dart-Konverter [DE]
- Conversor de JSON para Dart [PT]
- JSON to Dart 변환기 [KO]
- ตัวแปลง JSON เป็น Dart [TH]
- محول JSON إلى Dart [AR]
- JSON till Dart-konverterare [SV]
- JSON-naar-Dart-converter [NL]
- Convertisseur JSON vers Dart [FR]
- Konverter JSON ke Dart [ID]
- JSONからDartへの変換ツール [JA]
- Konwerter JSON na Dart [PL]
- Conversor de JSON a Dart [ES]
- JSON to Dart Converter [EN]
- Convertitore da JSON a Dart [IT]
- Конвертер JSON в Dart [RU]
- JSON 转 Dart 工具 [ZH]