嗨,我是扑扑和飞镖的新手。我在排版地图时遇到困难。我已经以HashMap<String,List<String>>
的格式在Firestore中保存了一些数据。在我的flutter应用程序中,当我获取此数据时,将以LinkedHashMap<dynamic,dynamic>
的格式获取它。我想将此LinkedHashMap
转换为HashMap<String,List<String>>
。请帮忙。
LinkedHashMap<dynamic,dynamic> mapUserWatchlistCompanies= documentSnapshot.data['Watchlist']; // Fetched data.
HashMap<String,List<String>> hashMapUserWatchlist = ???//How can it be converted? Need help here.
答案 0 :(得分:1)
dart中的类型转换与Java或Swift中的类型转换有些不同。在dart中,当涉及dynamic
时,您必须正确地投射所有内容。
现在,在您的情况下,您会得到一个LinkedHashMap<dynamic, dynamic>
,在JSON情况下,可以安全地假设键始终为String
值,但是键的value
可以是几种类型(数字,字符串,布尔值,映射或列表)。
因此,如果您具有以下格式的JSON:
{
"keyOne": ["One", "Two","whatever"],
"keyTwp": ["roses", "are", "red"],
"keyThree":["You", "know", "nothing", "john", "nonw"]
}
哪个是HashMap<String, List<String>>
,但是dart最初会得到一个LinkedHashMap<dynamic, dynamic>
,您可以使用以下代码安全地对其进行转换:
LinkedHashMap<dynamic, dynamic> theParsedOne = .....
HashMap<String, List<String>> newMap = HashMap.from(theParsedOne.map((key, value) {
List<dynamic> values = List.from(value);
return MapEntry(
key.toString(),
values.map((theValue) {
return theValue.toString();
}).toList());
}));
答案 1 :(得分:0)
我不确定您的代码中HashMap
到底是什么,但是如果您的意思是Map
,则可以使用以下代码创建地图:
Map<String, List<String>> values = Map<String, List<String>>.from(snap.data['Watchlist']);