Json _CastError(类型“\u InternalLinkedHashMap”不是类型转换中“Map”类型的子类型)

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

Im使用Dart json_可序列化包在Flatter应用程序中反序列化Firestore下面的数据结构

{
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 {

}