将scala中的'Any'类型转换为'Map'类型

将scala中的'Any'类型转换为'Map'类型,scala,Scala,如何在scala中将typeAny转换为typeMap 现在我有一个val: poop: scala.collection.immutable.Map[String,Any] = Map(scenario0 -> Map(street -> Bulevard, city -> Helsinki), scenario1 -> Map(street -> Bulevard, city -> Helsinki)) 我正在尝试提取与scenario0和scenari

如何在scala中将type
Any
转换为type
Map

现在我有一个val:

poop: scala.collection.immutable.Map[String,Any] = Map(scenario0 -> Map(street -> Bulevard, city -> Helsinki), scenario1 -> Map(street -> Bulevard, city -> Helsinki))
我正在尝试提取与
scenario0
scenario1
关联的
Map
对象,并将这些映射传递到一个函数中。

对于(键1),您可以将
任何
投射到
映射[a,B]

for (key <- myMap.keySet) myFunc(myMap(key))
例如,下面是
字符串到另一个映射的
Map

scala> val mapping : Map[String, Any] = Map("key1" -> Map ("key1.1" -> "value1"), "key2" -> Map("key1.2" -> 100))
mapping: Map[String,Any] = Map(key1 -> Map(key1.1 -> value1), key2 -> Map(key1.2 -> 100))

scala> mapping("key1")
res1: Any = Map(key1.1 -> value1)
Any
转换为
Map[A,B]

scala> mapping("key1").asInstanceOf[Map[String, Any]]
res3: Map[String,Any] = Map(key1.1 -> value1)
然后传递到函数

scala> def processSomething(mapping: Map[String, Any]) = println(mapping.keys)
processSomething: (mapping: Map[String,Any])Unit

scala> processSomething(mapping("key1").asInstanceOf[Map[String, Any]])
Set(key1.1)
2)另一种方法是匹配
mainMap(“键”)
的结果

这样,您就可以处理结果不是
Map
的情况。(使用强制转换时,会引发类强制转换异常。)

下面的例子

mapping("key1") match {
  case valueMap : Map[String, Any] => processSomething(valueMap)
  case _ => println("key1 is not Map")
}

看来钥匙并不重要,功能总是一样的
poop.values.map(x=>f(x.asInstanceOf[map[String,Any]])
Agree,如果我想处理所有键,这是最好的方法。cc@LIONDACER我正在寻找的是
。感谢您的详尽回答!非常感谢!错误:类型不匹配;发现:
Any
必需:
Map[\uu,\u]
仅作为旁注:您不应该有Map[String,Any].如果你能避免这种情况发生,请尽量考虑他不能回答的前一个问题。这是入站数据。