dart - 如何在循环中创建地图?
问题描述
我尝试构建地图以将其添加到 Firestore。
产品类别:
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']
);
}
Map<String, dynamic> toProduktJson() =>
{
"Name" : name,
"Anzahl" : anzahl
};
}
产品列表类:
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.cast<String, dynamic>())).toList();
return ProduktList(
produkte: produkte,
);
}
Map<String, dynamic> toProdukteJson() =>
{
"Produkte" : [
produkte[0].toProduktJson(),
produkte[1].toProduktJson(),
produkte[2].toProduktJson(),
]
};
}
我希望地图看起来像:
{
"Produkte" : [
produkte[0].toProduktJson(),
produkte[1].toProduktJson(),
produkte[2].toProduktJson(),
]
};
但是,如果 List 产品的长度为 2,则 Map 应该有 2,而 List 的长度为 10,则 Map 应该有 10 个条目。
我怎样才能做到这一点?请帮助我。谢谢
解决方案
一个选项如下:
Map<String, dynamic> toProdukteJson() {
Map map = new Map<String, dynamic>();
if (produkte != null) {
map["produkte"] = produkte.map((produkt) => produkt.toJson()).toList();
}
return map;
}
class Produkt {
final String id;
...
Produkt(this.id, ...);
Map toJson() => {'id' : id, ...};
}
推荐阅读
- python - 如何在字符串列表中获取最多三个单词的字符串
- php - 文本到 Json 转换
- c# - HttpResponse 命名空间/前缀与序列化 XML 上的 WSDL 格式不匹配
- flutter - 降级flutter包与升级前不相似
- mysql - 神器存储不断增长
- python - 从 pandas 数据框创建一个 json 对象
- angular - 模块“SomeModule”导入的意外值“SomeModule”。请添加@NgModule 注释
- android - ThreeTenABP DateTime 解析器为 yyyy-MM-ddTHH:mm:ss 格式提供异常
- c# - 在上传 C# 之前调整图像大小和优化图像
- jar - 执行 jar 期间发生 UnsupportedClassVersionError