CodeBlanks Logo Icon CodeBlanks

Özet - Model sınıfları

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

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

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

Soru
factory Urun.fromJson(Map<String, dynamic> json) {
  return Urun(
    json['ad'] ____,
    json['fiyat'] as int,
  );
}
Cevap
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

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