当条目较少时将 json 转换为 "scala.collection.immutable.HashMap" 时出现 ClassCastException
ClassCastException when converting json to "scala.collection.immutable.HashMap" when entries are less
我使用 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 映射行为还是 json4s 问题?
这是 Scala 的行为。 Map.apply(pair: T*)
returns Map
的特殊实例基于大小。具有 3 个元素的映射不需要哈希 table,只比较每个键更有效。
正如 Yuriy 在他的评论中所说,您应该只使用 Map
特征并将实现留给 scala。
我使用 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 映射行为还是 json4s 问题?
这是 Scala 的行为。 Map.apply(pair: T*)
returns Map
的特殊实例基于大小。具有 3 个元素的映射不需要哈希 table,只比较每个键更有效。
正如 Yuriy 在他的评论中所说,您应该只使用 Map
特征并将实现留给 scala。