首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >_CastError (类型'_InternalLinkedHashMap<dynamic,dynamic>‘不是类型Map<String,dynamic>的子类型)

_CastError (类型'_InternalLinkedHashMap<dynamic,dynamic>‘不是类型Map<String,dynamic>的子类型)
EN

Stack Overflow用户
提问于 2019-11-07 04:24:16
回答 3查看 2.1K关注 0票数 2

我正在使用Dart "json_serializable“包反序列化以下的Firestore在颤振应用程序中。

代码语言:javascript
复制
{
googleBookId: jjl4BgAAQBAJ, 
providers: [
    {providerId: 2FA9fULKLLf7VUPPFnFRnv}, 
    {providerId: 8UYTGUHY7UJS432FVBJRnv}
]
}

下面是要映射的Model类:

代码语言:javascript
复制
@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”类型的子类型) 还有其他库可以用来反序列化文档吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-07 23:40:29

正如在其他问题中发布的那样,我能够在反序列化之前通过编码到JSON并返回到JSON对象来反序列化Firestore文档。

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

票数 1
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2020-02-13 15:29:54

解决方案是使用anyMapexplicitToJson属性。

代码语言:javascript
复制
@JsonSerializable(explicitToJson: true, anyMap: true)
class Book {

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58741971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档