我使用json4s将json转换为scala.collection.immutable.HashMap。但是它失败了
java.lang.ClassCastException: scala.collection.immutable.Map$Map3 cannot be cast to scala.collection.immutable.HashMap
当json中的条目少于五个时。它与五个或更多条目完美配合。
检查的json是正确的,应该不会出现。
implicit val formats = Serialization.formats(NoTypeHints)
read[scala.collection.immutable.HashMap[String, Config]](json).get(id)
case class Config(joinConfig: JoinConfig,
a: Option[Boolean],
b: Option[Boolean],
c: Option[Boolean]) {}
case class JoinConfig(d: Double,e: Double,f: Double) {}
这是Scala Map行为还是json4s问题?
答案 0 :(得分:1)
这是Scala行为。 Map.apply(pair: T*)
根据大小返回Map
的特殊实例。具有3个元素的映射不需要哈希表,仅比较每个键会更有效。
正如Yuriy在他的评论中所说,您应该只使用Map
特性,并将实现留给scala。