Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将json转换为“时的ClassCastException”;scala.collection.immutable.HashMap“;当条目较少时_Scala_Apache Spark_Json4s - Fatal编程技术网

将json转换为“时的ClassCastException”;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

我使用json4s将json转换为scala.collection.immutable.HashMap。但它失败了
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) {}