【发布时间】:2014-01-21 19:27:17
【问题描述】:
我经常发现自己在做类似的事情:
val json:Map[String,Any] = getJSON(...)
val v = json.get("username")
val uname = if ( v!=null ) v.asInstanceOf[toString] ) else null
而我更喜欢写的是:
val uname = json.get[String]("username")
但是 get 不接受类型参数——所以我的代码过于冗长如下:
val uname = json.get("username").asInstanceOf[String]
在这种情况下如何简化对容器的访问? (对于 JSON 样式的对象,我经常这样做)
【问题讨论】:
-
(null: Object).asInstanceOf[String]工作得很好。还要注意Map上的get返回Option[T],在这种情况下Option[Any]永远不会是null。可能是Some(null),但不是null。 -
不是一个答案,但在 Scala 中处理 JSON 有很多更好的方法,不涉及
Map[String, Any]——例如我的答案 here。 -
@senia -- 非常正确。已修改问题。
标签: scala scala-collections downcast