我正在使用Dart "json_serializable“包反序列化以下的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”不是类型cast中的“Map”类型的子类型) 还有其他库可以用来反序列化文档吗?
发布于 2019-11-07 23:40:29
正如在其他问题中发布的那样,我能够在反序列化之前通过编码到JSON并返回到JSON对象来反序列化Firestore文档。
@Chiziaruhoma Ogbonda感谢您的澄清,它帮助我以其他方式思考,而不是直接绑定到反序列化文档。
发布于 2019-11-07 06:03:43
好的,我不知道您是否知道,但是firestore给您发送了一个Map,而不是JSON。您正在尝试使用JSON序列化程序。json是Map<String,dynamic>,而防火墙发送Map<dynamic,dynamic>.,所以不能将其作为JSON使用。
看看这个94062/how-to-use-cloud-firestore-with-flutter-e6f9e8821b27
发布于 2020-02-13 15:29:54
解决方案是使用anyMap和explicitToJson属性。
@JsonSerializable(explicitToJson: true, anyMap: true)
class Book {
}https://stackoverflow.com/questions/58741971
复制相似问题