Özet - Model sınıfları
- Flutter kursu
- Orta seviye
- Ders 60/99
- 4 dk
fromJson ve toJson'ı birleştirerek Tip sınıfı yazarsın.
Model sınıfında çift yönlü dönüşüm
Bir model sınıfı hem fromJson hem de toJson içeriyorsa, veriyi çift yönlü taşıyabilirsin: API yanıtından nesne oluşturur, kullanıcı değişikliklerini de JSON'a çevirip sunucuya gönderirsin. Bu iki metod birlikte modelin hem okuma hem yazma tarafını kapatır.
class Urun {
final String ad;
final int fiyat;
Urun(this.ad, this.fiyat);
factory Urun.fromJson(Map<String, dynamic> json) {
return Urun(json['ad'] as String, json['fiyat'] as int);
}
Map<String, dynamic> toJson() => {'ad': ad, 'fiyat': fiyat};
}Uygulama Urun modelini tamamla
Urun sınıfına fromJson fabrika kurucusu ve toJson metodunu ekle. main içinde verilen Map'ten bir Urun nesnesi oluştur ve toJson çıktısını jsonEncode ile yazdır.
Başlangıç kodu
import 'dart:convert';
class Urun {
final String ad;
final int fiyat;
Urun(this.ad, this.fiyat);
// fromJson fabrika kurucusunu ekle
// toJson metodunu ekle
}
void main() {
// {'ad': 'Kitap', 'fiyat': 50} Map'inden Urun oluştur
// toJson çıktısını jsonEncode ile yazdır
}Örnek çözüm
import 'dart:convert';
class Urun {
final String ad;
final int fiyat;
Urun(this.ad, this.fiyat);
factory Urun.fromJson(Map<String, dynamic> json) {
return Urun(json['ad'] as String, json['fiyat'] as int);
}
Map<String, dynamic> toJson() {
return {'ad': ad, 'fiyat': fiyat};
}
}
void main() {
final u = Urun.fromJson({'ad': 'Kitap', 'fiyat': 50});
print(jsonEncode(u.toJson()));
}Beklenen çıktı
{"ad":"Kitap","fiyat":50}
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir modelde hem fromJson hem toJson olması ne sağlar?
- Otomatik UI çizimi
- Çift yönlü JSON dönüşümü Doğru cevap
- Veritabanı bağlantısı
- Daha hızlı derleme
Açıklama: fromJson JSON'dan nesne, toJson nesneden Map üretir; ikisi birlikte çift yönlü dönüşüm sağlar. UI, veritabanı ve derleme hızı modelin işi değildir.
2 JSON değerini türe çevir
factory Urun.fromJson(Map<String, dynamic> json) {
return Urun(
json['ad'] ____,
json['fiyat'] as int,
);
}
factory Urun.fromJson(Map<String, dynamic> json) {
return Urun(
json['ad'] as String,
json['fiyat'] as int,
);
}
Açıklama: JSON'dan gelen değeri String'e çevirmek için `as String` kullanılır; yanlış tür çevrimi çalışma anında hata fırlatır.
3 Model özet
| Kavram | Anlamı |
|---|---|
fromJson |
JSON'dan model oluşturur |
toJson |
modeli Map'e çevirir |
final |
değişmez alanları belirtir |
factory |
fabrika kurucu |