json_serializable
- Dart kursu
- İleri seviye
- Ders 41/83
- 5 dk
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
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
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
@____()
class User {}
@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.