Json _CastError(类型“\u InternalLinkedHashMap”不是类型转换中“Map”类型的子类型)
Im使用Dart json_可序列化包在Flatter应用程序中反序列化Firestore下面的数据结构Json _CastError(类型“\u InternalLinkedHashMap”不是类型转换中“Map”类型的子类型),json,flutter,dart,google-cloud-firestore,json-serialization,Json,Flutter,Dart,Google Cloud Firestore,Json Serialization,Im使用Dart json_可序列化包在Flatter应用程序中反序列化Firestore下面的数据结构 { googleBookId: jjl4BgAAQBAJ, providers: [ {providerId: 2FA9fULKLLf7VUPPFnFRnv}, {providerId: 8UYTGUHY7UJS432FVBJRnv} ] } 下面是要映射的模型类: @JsonSerializable() class Book { String googleBoo
{
googleBookId: jjl4BgAAQBAJ,
providers: [
{providerId: 2FA9fULKLLf7VUPPFnFRnv},
{providerId: 8UYTGUHY7UJS432FVBJRnv}
]
}
下面是要映射的模型类:
@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类型“\u InternalLinkedHashMap”不是类型转换中类型“Map”的子类型
是否有其他库可用于反序列化文档
好吧,我不知道你是否知道,但是firestore会给你发送一个地图,而不是JSON。您正在尝试使用JSON序列化程序。 JSON是 地图 当firestore发送 地图所以不能将其解析为json
看看这个好吧,我不知道你是否知道,但是firestore会给你发送一个地图,而不是JSON。您正在尝试使用JSON序列化程序。 JSON是 地图 当firestore发送 地图所以不能将其解析为json 查看这篇文章如中所述,在反序列化之前,我可以将Firestore文档编码为JSON字符串并返回JSON对象,从而实现反序列化 感谢您的澄清,这有助于我以另一种方式思考,而不是直接将文档反序列化。如中所述,在反序列化之前,我能够通过编码到JSON字符串并返回到JSON对象来反序列化Firestore文档
感谢您的澄清,这有助于我以另一种方式思考,而不是直接将文档反序列化。解决方案是使用和属性
@JsonSerializable(explicitToJson: true, anyMap: true)
class Book {
}
解决方案是使用和属性
@JsonSerializable(explicitToJson: true, anyMap: true)
class Book {
}