将json转换为“时的ClassCastException”;scala.collection.immutable.HashMap“;当条目较少时
我使用json4s将json转换为scala.collection.immutable.HashMap。但它失败了将json转换为“时的ClassCastException”;scala.collection.immutable.HashMap“;当条目较少时,scala,apache-spark,json4s,Scala,Apache Spark,Json4s,我使用json4s将json转换为scala.collection.immutable.HashMap。但它失败了 java.lang.ClassCastException:scala.collection.immutable.Map$Map3不能强制转换为scala.collection.immutable.HashMap 当json中的条目少于五个时。它适用于五个或更多条目 选中的json是正确的,这不应该是问题 implicit val formats = Serialization.fo
java.lang.ClassCastException:scala.collection.immutable.Map$Map3不能强制转换为scala.collection.immutable.HashMap
当json中的条目少于五个时。它适用于五个或更多条目
选中的json是正确的,这不应该是问题
implicit val formats = Serialization.formats(NoTypeHints)
read[scala.collection.immutable.HashMap[String, Config]](json).get(id)
这是scala映射行为还是json4s问题?这是scala行为。
Map.apply(pair:T*)
根据大小返回Map
的特殊实例。一个包含3个元素的映射不需要哈希表,只比较每个键更有效
正如Yuriy在他的评论中所说的,您应该只使用
Map
特性,将实现留给scala。我想这与较小hashmaps的不同表示形式有关:scala.collection.immutable.Map$Map3可以强制转换为Map。read应该使用Map而不是HashMap,比如read[Map[String,Config]]
Scala不可变映射有子类Map1、Map2、Map3和Map4,我认为问题在于它们如何存储值。我将尝试使用read[Map[String,Config]]查看这将如何工作。
case class Config(joinConfig: JoinConfig,
a: Option[Boolean],
b: Option[Boolean],
c: Option[Boolean]) {}
case class JoinConfig(d: Double,e: Double,f: Double) {}