CodeBlanks Logo Icon CodeBlanks

fromJson

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);  // 30

Uygulama 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

main.dart
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

main.dart
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ı

Soru
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);
  }
}
Cevap
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&lt;String, dynamic&gt; girdi parametresi
json['ad'] as String değer çevrimi
return Kullanici(...) nesne döndürme

Orta seviye bölümündeki tüm dersler