Sérialisation Flutter / Dart Json
Je suis nouveau à la fois dans Flutter et Dart et j'essaie de convertir une application de studio Android pour utiliser Flutter si je le peux. J'essaie d'analyser quelques json simples pour savoir comment toutes les fonctionnalités de fléchettes / flutter peuvent m'aider.
La structure de classe dans laquelle je veux écrire est:
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);
}
la chaîne json est simple
{"id":1,"name":"Acme"}
et:
print(company.id)is null
print(company.name) is Acme;
quand je regarde le fichier Company.g.dart il n'y a aucune référence à la classe étendue Salinas? Y a-t-il un moyen de faire cela?
Il me manque clairement quelque chose.
Réponses
Vous devez définir les propriétés de classe étendues dans le constructeur enfant comme ceci:
class Company extends Salinas {
final String name;
Company({id, this.name}) : super(id: id);
}
Après vous verrez ce résultat:
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;
}
}
Sur la base du JSON que vous avez fourni, vous devriez avoir créé un modèle comme ci-dessus. Après cela, vous pouvez cartographier le tout assez facilement,
Company company = Company.fromJson(response);
et alors vous êtes libre d'imprimer
print(company.id);
print(company.name);