将“ Map <String,List <String >>”强制转换为“ Map <String,List <String >>”

雅亚·乌丁(Yahya Uddin)

我想投一个Map<String, dynamic>Map<String, List<String>>

我在Flutter中尝试了以下方法:

Map<String, dynamic> dynamicMap = {
  'a': ['1', '2', '3'],
  'b': ['1', '2', '3'],
  'c': ['1', '2', '3'],
};
Map<String, List<String>> typedMap = dynamicMap;

但是出现以下错误:

type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, List<String>>'

然后,我尝试:

Map<String, List<String>> typedMap = dynamicMap.cast<String, List<String>>();

这似乎可以正常工作,但是在尝试使用它时会遇到相同的错误,例如print(typedMap)

谢谢您的帮助。

编辑

值得一提的是:

Map<String, dynamic> dynamicMap = {
  'a': ['1', '2', '3'],
  'b': ['1', '2', '3'],
  'c': ['1', '2', '3'],
};
Map<String, List<String>> typedMap = dynamicMap.cast<String, List<String>>();

确实有效(对问题中的错误表示歉意)。

但是,当数据来自json时,就像这样:

String rawJson = """{
   "a": ["1", "2", "3"],
   "b": ["1", "2", "3"],
   "c": ["1", "2", "3"]
}""";
final Map<String, dynamic> dynamicMapFromJson = json.decode(rawJson);
Map<String, List<String>> typedMap = dynamicMapFromJson.cast<String, List<String>>();

该代码不再起作用,并引发了提到的异常。

以下答案有助于解决此问题。

亚都
Map<String, dynamic> dynamicMap = {
  'a': ['1', '2', '3'],
  'b': ['1', '2', '3'],
  'c': ['1', '2', '3'],
};
Map<String, List<String>> typedMap;
dynamicMap.forEach((key,value){
 List<String> list = List.castFrom(value);
 typedMap[key] = list
});

这是因为可以在运行时为动态数据类型变量分配任何数据类型。但是这里的typedMap值已经用数据类型声明了List<String>,除之外没有其他可以分配的值List<String>该错误是因为您试图将动态数据类型分配给List<string>数据类型,这是一个伪示例

String s = dynamic(); //impossible
dynamic s = String(); //possible

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将List <Map <String,List <String >>>转换为String [] []

将 List<List<TextValue>> 转换为 List<Map<String, String>>

Java将List <String>转换为Map <String,String>

将Map <String,Object>转换为Map <String,List <Object >>

Java-8流:将List <{String,List <String>}>转换为Map <String,List <String >>

使用Terraform将列表(map(list(map(string()))))转换为map(list(map(string))))

Java8:通过联接值将Map <String,List <String >>转换为Map <String,String>

Kotlin FP:将List <String>转换为Map <String,Int>

将List <Map <String,Object >>转换为String [] []

将List <String>转换为Map <String,Integer>

如何将List <Map <String,Object >>转换为List <Map <String,String >>

Scala - 将 List[((String, String), Double)] 转换为 List[String,Map[String,Double]]

Java-8流:将Map <String,List <List <DataType >>>转换为Map <String,List <DataType >>

如何将 List<Map<String,Object>> 转换为 Map<String, String>?

如何将具有类似键的List <Map <String,String >>转换为Map <String,List <String >>?

如何将List <Map <?,?>>转换为List <Map <String,String >>?

使用Java 8流API将List <Map <String,Object >>转换为Map <String,List <Map <String,Object >>>

使用Java 8流,如何将Map <String,Map <String,List <Person >>>转换为Map <Integer,Map <String,Integer >>?

无法将HashMap <String,String>强制转换为扩展Map <String,String>的接口

将Map <String,String>转换为Map <String,Object>

轻松将Map <String,Object>转换为Map <String,String>

将Map <String,Object>转换为Map <String,String>

将Json转换为Map [String,String]

将Map <String,String>转换为POJO

将 byte[] 转换为 List<Map<String, Object>>

Java:如何将List <?>转换为Map <String,?>

将list <map <string,object >>转换为POJO类的对象

使用Dart将String转换为List / Map

将 Stream<QuerySnapshot<Map<String, dynamic>>> 转换为 List?