我尝试在Flutter应用中解析Firestore中的文档。
Firestoredocument:
我创建了两个类来解析此文档。
类产品:
class Produkt{
String name;
int anzahl;
Produkt({
this.name,
this.anzahl,
});
factory Produkt.fromJson(Map<String, dynamic> parsedJson){
return Produkt(
name:parsedJson['Name'],
anzahl:parsedJson['Anzahl']
);
}
}
Class ProduktList:
class ProduktList{
final List<Produkt> produkte;
ProduktList({
this.produkte,
});
factory ProduktList.fromJson(Map<String, dynamic> parsedJson){
var list = parsedJson["Produkte"] as List;
List<Produkt> produkte = list.map((i) => Produkt.fromJson(i)).toList();
return ProduktList(
produkte: produkte,
);
}
}
当我构建此对象时,将引发异常:
type '_InternalLinkedHashMap<dynamic, dynamic>' is not a subtype of type 'Map<String, dynamic>'
我认为错误发生在这里:
List<Produkt> produkte = list.map((i) => Produkt.fromJson(i)).toList();
你们伙计们有个主意我该如何解决这个问题? 谢谢您的回答!
答案 0 :(得分:1)
您用于parsedJson
的Map对象显然不是Map<String, dynamic>
。
假设我们能够将此对象投射到Map<String, dynamic>
,请尝试:
List<Produkt> produkte = list.map((i) => Produkt.fromJson(i.cast<String, dynamic>())).toList();
或:
List<Produkt> produkte = list.map((i) => Produkt.fromJson(Map<String, dynamic>.from(i))).toList();
在这里看看类似的问题: How to cast an `_InternalLinkedHashMap` created from json?
如果这样做没有帮助,请添加您如何使用ProduktList.fromJson
的代码,以便我们详细了解该错误。