Flutter / Dart Json Serialisierung
Ich bin neu in Flutter und Dart und versuche, eine Android Studio-Anwendung zu konvertieren, um Flutter zu verwenden, wenn ich kann. Ich versuche, ein einfaches JSON zu analysieren, um zu erfahren, wie mir alle Dart- / Flatterfunktionen helfen können.
Die Klassenstruktur, in die ich schreiben möchte, ist:
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);
}
Die JSON-Zeichenfolge ist einfach
{"id":1,"name":"Acme"}
und:
print(company.id)is null
print(company.name) is Acme;
Wenn ich mir die Datei Company.g.dart ansehe, gibt es keinen Verweis auf die erweiterte Klasse Salinas? Gibt es eine Möglichkeit, dies zu tun?
Mir fehlt eindeutig etwas.
Antworten
Sie müssen erweiterte Klasseneigenschaften im untergeordneten Konstruktor wie folgt definieren:
class Company extends Salinas {
final String name;
Company({id, this.name}) : super(id: id);
}
Nachdem Sie dieses Ergebnis gesehen haben:
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;
}
}
Auf der Grundlage von JSON, das Sie bereitgestellt haben, sollten Sie ein Modell wie oben erstellt haben. Danach können Sie das Ganze ganz bequem abbilden,
Company company = Company.fromJson(response);
und dann können Sie frei drucken
print(company.id);
print(company.name);