在 Scala 中动态处理任何数据类型

Handle Any data type dynamically in Scala

我在 Scala 中有一个由类型为 Map[String, Any]

的函数返回的映射

例如:

val map: Map[String, Any] = Map("key1" -> "strVal", "key2" -> List[Map[String, Any]](), "key3" -> Map("k1" -> "v1"))

现在的问题是,要处理与键对应的值,我每次都必须使用 asInstanceOf[]。例如,

val key2Hash = map.getOrElse("key3", Map()).getOrElse("k1", "")

抛出错误,因为检索到的地图是 Any 形式,我必须对以下每种情况使用 asInstanceOf[]

val key2Hash = map.getOrElse("key3", Map()).asInstanceOf[Map[String, String]].getOrElse("k1", "")

有更好的方法吗?或者我不应该首先从 Map[String, Any] 开始吗?

Map[String, Any]?你还不如直接用python!

开个玩笑,您可以使用模式匹配获得 "nicer" 强制转换语法:

map.get("key3") match {
  case Some(anotherMap: Map[String, String]) => ...
  case _ => ...
}