1
votes

_CastError (le type '_InternalLinkedHashMap ' n'est pas un sous-type de type 'Map ' dans le type cast)

J'utilise le package Dart "json_serializable" pour désérialiser sous la structure de données Firestore dans l'application Flutter.

@JsonSerializable()
class Book {

  String googleBookId;
  List<Provider> providers;

  Book(this.googleBookId,
  {List<Provider> providers})
  : providers = providers ?? <Provider>[];

  factory Book.fromJson(Map<String, dynamic> map) => _$BookFromJson(map);

  Map<String, dynamic> toJson() => _$BookToJson(this);
}

@JsonSerializable()
class Provider {

  String providerId;

  Provider(this.providerId);

  factory Provider.fromJson(Map<String, dynamic> map) => _$ProviderFromJson(map);

  Map<String, dynamic> toJson() => _$ProviderToJson(this);
}

Et ci-dessous se trouve la classe Model à mapper:

{
googleBookId: jjl4BgAAQBAJ, 
providers: [
    {providerId: 2FA9fULKLLf7VUPPFnFRnv}, 
    {providerId: 8UYTGUHY7UJS432FVBJRnv}
]
}


0 commentaires

3 Réponses :


1
votes

D'accord, donc je ne sais pas si vous savez, mais firestore vous envoie une carte pas JSON. Vous essayez d'utiliser le sérialiseur JSON. JSON est Carte pendant que Firestore envoie Map . Vous ne pouvez donc pas utiliser l'analyse en tant que json.

Vérifiez ceci https: / /medium.com/@atul.sharma_94062/how-to-use-cloud-firestore-with-flutter-e6f9e8821b27


0 commentaires

1
votes

Comme indiqué dans autre question , j'ai pu désérialiser le document Firestore en encodant dans la chaîne JSON et de nouveau en objet JSON avant la désérialisation.

@Chiziaruhoma Ogbonda merci pour la clarification, cela m'aide à penser d'une autre manière plutôt directement liée à la désérialisation du document .


0 commentaires

0
votes

La solution consiste à utiliser anyMap et propriétés explicitToJson .

@JsonSerializable(explicitToJson: true, anyMap: true)
class Book {

}

p>


0 commentaires