fromJson
- Flutter kursu
- Orta seviye
- Ders 57/99
- 4 dk
fromJson fabrika kurucusu ile JSON'dan model oluşturmayı öğrenirsin.
fromJson fabrika kurucusu
Bir model sınıfına fromJson fabrika kurucusu ekleyerek JSON Map'ini model nesnesine çevirirsin. factory anahtar kelimesi, kurucunun yeni bir nesne oluşturup döndürmesini sağlar. JSON'daki değerleri as ile türe çevirerek güvenli erişim sağlarsın.
class Kullanici {
final String ad;
final int yas;
Kullanici(this.ad, this.yas);
factory Kullanici.fromJson(Map<String, dynamic> json) {
return Kullanici(
json['ad'] as String,
json['yas'] as int,
);
}
}Değerleri türe çevirmek
fromJson içinde her değeri açıkça türe çevirmek hataları erken yakalar. Eğer JSON'da bir alan eksikse veya yanlış türdeyse, as çevrimi çalışma anında hata fırlatır; böylece sorunun yerini kolayca bulursun.
final m = {'ad': 'Cem', 'yas': 'otuz'};
// Kullanici.fromJson(m); // Hata: 'otuz' int değil
final m2 = {'ad': 'Cem', 'yas': 30};
final k = Kullanici.fromJson(m2);
print(k.yas); // 30Uygulama fromJson kurucusu ekle
Kullanici sınıfına fromJson fabrika kurucusu ekle. main içinde verilen Map'ten bir nesne oluştur ve ad alanını yazdır.
Başlangıç kodu
class Kullanici {
final String ad;
final int yas;
Kullanici(this.ad, this.yas);
// fromJson'i buraya yaz
}
void main() {
final m = {'ad': 'Ela', 'yas': 22};
// m'yi kullanarak nesne oluştur ve ad'ını yazdır
}Örnek çözüm
class Kullanici {
final String ad;
final int yas;
Kullanici(this.ad, this.yas);
factory Kullanici.fromJson(Map<String, dynamic> json) {
return Kullanici(
json['ad'] as String,
json['yas'] as int,
);
}
}
void main() {
final m = {'ad': 'Ela', 'yas': 22};
final k = Kullanici.fromJson(m);
print(k.ad);
}Beklenen çıktı
Ela
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 fromJson nasıl tanımlanır?
- void metot olarak
- async fonksiyon olarak
- override edilmiş metot olarak
- factory kurucu olarak Doğru cevap
Açıklama: fromJson, derslerde factory kurucu olarak tanımlanır. void bir şey döndürmez, async geri dönüş için Future gerektirir, override ise miras alınan metodu ezmek içindir.
2 Fabrika kurucu anahtarı
class Kullanici {
final String ad;
final int yas;
Kullanici(this.ad, this.yas);
____ Kullanici.fromJson(Map<String, dynamic> json) {
return Kullanici(json['ad'] as String, json['yas'] as int);
}
}
class Kullanici {
final String ad;
final int yas;
Kullanici(this.ad, this.yas);
factory Kullanici.fromJson(Map<String, dynamic> json) {
return Kullanici(json['ad'] as String, json['yas'] as int);
}
}
Açıklama: fromJson bir fabrika kurucusudur; factory anahtar kelimesi ile tanımlanır.
3 fromJson parçaları
| Kavram | Anlamı |
|---|---|
factory |
fabrika kurucu anahtarı |
Map<String, dynamic> |
girdi parametresi |
json['ad'] as String |
değer çevrimi |
return Kullanici(...) |
nesne döndürme |