_CastError(类型'_InternalLinkedHashMap <dynamic,dynamic>'不是强制类型转换中'Map <String,dynamic>'类型的子类型)

我使用Dart“ json_serializable”包在Flutter应用程序中在Firestore数据结构下反序列化。

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

下面是要映射的Model类:

@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);
}

反序列化时出现以下错误

  

_CastError(类型“ _InternalLinkedHashMap”不是强制类型转换中“地图”类型的子类型)

     

还有其他可以反序列化文档的库吗?

gff138 回答:_CastError(类型'_InternalLinkedHashMap <dynamic,dynamic>'不是强制类型转换中'Map <String,dynamic>'类型的子类型)

好的,所以我不知道您是否知道,但是firestore会向您发送一个不是JSON的地图。您正在尝试使用JSON序列化器。 杰森是  Map<String,dynamic> 当Firestore发送时  Map<dynamic,dynamic>.因此,您不能将其解析为json。

检查https://onelogin.service-now.com/kb_view.do?sysparm_article=KB0011181

,

other question中所述,我能够通过反序列化之前编码为JSON字符串并返回JSON对象来反序列化Firestore文档。

@Chiziaruhoma Ogbonda感谢您的澄清,它帮助我以其他方式思考,而不是直接绑定反序列化文件。

,

解决方案是使用anyMapexplicitToJson属性。

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

}
本文链接:https://www.f2er.com/3147519.html

大家都在问