在斯卡拉
scala.collection.immutable.$colon$colon
简单地说,数据是
scala.collection.immutable.List
自从
List
生成的
cons
(
::
)符号。
所以这个错误
scala.collection.immutable.$colon$colon不能转换为scala.collection.listbuffer
意思是你想改变
列表
到
ListBuffer
它们是不相容的。
所以你能做的就是改变
列表缓冲区
到
列表
作为
val component = data.get("viewed_objects").get.asInstanceOf[List[Map[String, Any]]]
但那将是无用的类型铸造
data.get("viewed_objects").get
已经是
List[Map[String, Any]]
类型
所以就这么做
val component = data.get("viewed_objects").get
//component: List[scala.collection.immutable.Map[String,Any]] = ...
就够了
我希望答案对你有帮助
更新
您已评论为
顺便说一下,如果数据值是data:map(),则表示映射为空,则代码将返回exception none.get exception。如何处理得体?
为你所用
Try
getOrElse
作为
val component = Try(data.get("viewed_objects").get).getOrElse(List(Map.empty[String, Any]))
或者你可以用
模式匹配
作为
val component = data.get("viewed_objects") match {case Some(data) => data; case None => List(Map.empty[String, Any])}