CodeBlanks Logo Icon CodeBlanks

json_serializable

json_serializable ile kod üretimi öğrenirsin.

json_serializable

json_serializable, fromJson/toJson kodunu otomatik üreten bir pakettir. @JsonSerializable() annotation'ı ile işaretli sınıflar için build_runner kod üretir.

Avantaj: elle fromJson/toJson yazma yok; tip güvenli; alan ekleyince kod otomatik güncellenir. Üretilen dosya .g.dart uzantılı olur.

Kullanım: sınıfa @JsonSerializable() ekle, part 'user.g.dart';_directive'i yaz, dart run build_runner build çalıştır.

part directive ve .g.dart

part 'user.g.dart'; direktifi, üretilen kodu kaynak dosyaya ekler. .g.dart dosyası build_runner tarafından yazılır; elle düzenlenmez.

Üretilen dosyada _$UserFromJson(m) ve _$UserToJson(u) fonksiyonları bulunur. Senin sınıfın bunları çağırır: factory User.fromJson(m) => _$UserFromJson(m);.

Alan ekleyip build çalıştırınca .g.dart otomatik güncellenir. Elle fromJson/toJson yazma derdi yoktur.

Uygulama Annotation sınıfı tanımla

class JsonSerializable { const JsonSerializable(); } annotation sınıfını tanımla. @JsonSerializable() ile işaretli class Product { String name; Product(this.name); } tanımla. main içinde print(Product('Kitap').runtimeType); ekle.

Başlangıç kodu

main.dart
void main() {
  // annotation sınıfını tanımla (const constructor)
  // annotation ile işaretli Product sınıfını tanımla
  // Product örneğinin tip adını yazdır
}

Örnek çözüm

main.dart
class JsonSerializable {
  const JsonSerializable();
}

@JsonSerializable()
class Product {
  String name;
  Product(this.name);
}

void main() {
  print(Product('Kitap').runtimeType);
}

Beklenen çıktı

Product

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Annotation ekle

Soru
@____()
class User {}
Cevap
@JsonSerializable()
class User {}

Açıklama: @JsonSerializable() sınıfı kod üretimi için işaretler.

2 json_serializable parçaları

Kavram Anlamı
@JsonSerializable Annotation
.g.dart Üretilen dosya
build_runner Kod üretici
part Ekleme direktifi

3 json_serializable neyi otomatik yapar?

  • fromJson/toJson üretimi Doğru cevap
  • Veritabanı açma
  • HTTP isteği
  • UI çizimi

Açıklama: json_serializable fromJson/toJson kodunu otomatik üretir.

İleri seviye bölümündeki tüm dersler