Flutter / Dart Json Serileştirme
Hem Flutter hem de Dart'ta yeniyim ve bazı android stüdyo uygulamalarını yapabiliyorsam flutter kullanacak şekilde dönüştürmeye çalışıyorum. Tüm dart / flutter özelliklerinin bana nasıl yardımcı olabileceğini öğrenmek için bazı basit json'ları ayrıştırmaya çalışıyorum.
Yazmak istediğim sınıf yapısı:
class Company extends Salinas {
final String name;
Company({this.name}) : super();
factory Company.fromJson(Map<String, dynamic> json) => _$CompanyFromJson(json); Map<String, dynamic> toJson() => _$CompanyToJson(this);
}
class Salinas {
final int id;
Salinas({this.id});
factory Salinas.fromJson(Map<String, dynamic> json) => _$SalinasFromJson(json); Map<String, dynamic> toJson() => _$SalinasToJson(this);
}
json dizesi basittir
{"id":1,"name":"Acme"}
ve:
print(company.id)is null
print(company.name) is Acme;
Company.g.dart dosyasına baktığımda genişletilmiş Salinas sınıfına referans yok mu? bunu yapmanın bir yolu var mı?
Açıkça bir şeyi kaçırıyorum.
Yanıtlar
Alt yapıcıda genişletilmiş sınıf özelliklerini şu şekilde tanımlamanız gerekir:
class Company extends Salinas {
final String name;
Company({id, this.name}) : super(id: id);
}
Sonra bu sonucu göreceksiniz:
print(company.id) is 1
print(company.name) is Acme;
class Company {
int id;
String name;
Company({this.id, this.name});
Company.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
return data;
}
}
Sağladığınız JSON temelinde, yukarıdaki gibi bir Model yapmış olmalısınız. Bundan sonra, her şeyi oldukça rahat bir şekilde haritalayabilirsiniz.
Company company = Company.fromJson(response);
ve sonra yazdırmakta özgürsün
print(company.id);
print(company.name);