fromJson
- Dart kursu
- İleri seviye
- Ders 39/83
- 5 dk
fromJson ile nesne oluşturmayı öğrenirsin.
fromJson fabrika metodu
fromJson, bir sınıfın JSON Map'inden örnek oluşturan fabrika metodudur. Tip güvenli erişim sağlar; dynamic'e göre daha güvenlidir.
Örnek: factory User.fromJson(Map<String, dynamic> m) => User(m['name'] as String, m['age'] as int);. JSON'daki her alan cast edilir.
Kullanım: var u = User.fromJson(jsonDecode(s) as Map<String, dynamic>);. Böylece u.name tip güvenli erişimle çalışır.
Null güvenli fromJson
JSON alanları eksik olabilir; bu yüzden fromJson null güvenli yazılır. m['name'] as String? nullable yapar ya da varsayılan değer verilir: m['name'] ?? 'misafir'.
Sayısal alanlar için (m['age'] as num).toInt() güvenlidir; JSON'da int ve double ayrımı belirsiz olabilir.
İç içe nesneler için iç sınıfın fromJson'i çağrılır: Address.fromJson(m['address'] as Map<String, dynamic>).
Uygulama User.fromJson tanımla
class User { String name; int age; User(this.name, this.age); factory User.fromJson(Map<String, dynamic> m) => User(m['name'] as String, m['age'] as int); } tanımla. main içinde var u = User.fromJson({'name': 'Ayşe', 'age': 30}); ve print(u.name); ekle.
Başlangıç kodu
void main() {
// User sınıfını fromJson ile tanımla (main dışında)
// fromJson ile örnek oluştur; name yazdır
}Örnek çözüm
class User {
String name;
int age;
User(this.name, this.age);
factory User.fromJson(Map<String, dynamic> m) =>
User(m['name'] as String, m['age'] as int);
}
void main() {
var u = User.fromJson({'name': 'Ayşe', 'age': 30});
print(u.name);
}Beklenen çıktı
Ayşe
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 fromJson parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
factory |
Fabrika anahtarı |
Map<String, dynamic> |
Giriş türü |
as String |
Tip cast |
User(...) |
Örnek oluşturma |
2 fromJson ne döndürür?
- String
- Map
- Sınıf örneği Doğru cevap
- Future
Açıklama: fromJson sınıf örneği döndürür.
3 Tip cast
m['name'] ____ String
m['name'] as String
Açıklama: 'as String' dynamic'i String'e cast eder.