背景:
Map[String, Any]
作为json4s'提取方法的结果类型(即parse(json).extract[Map[String, Any]]
)例外:
我从Java库中得到一个例外java.lang.ClassCastException: scala.collection.immutable.$colon$colon cannot be cast to java.util.ArrayList
原因:
我想这是因为Json4s只为List
元素生成scala List
而Java JArray
(例如["a", "b", "c"]
=> scala.collection.immutable.List("a", "b", "c")
)
那么,问题是我如何处理这个案子?
答案 0 :(得分:0)
你应该坚持使用json4s的scala类型(通常用于所有scala代码)。然后,您可以使用scala.collection.JavaConverters以下列方式转换scala对象。
\\
如果你真的需要一个ArrayList(而不仅仅是val list = List(1,2,3)
val javaList: java.util.List[Int] = list.asJava
yourJavaLib.call(javaList)
),我只会按照以下方式创建它。
java.util.List
答案 1 :(得分:0)
此刻,我发现了一个丑陋但有效的方法。
mapper = new com.fasterxml.jackson.databind.ObjectMapper
mapper.readValue(org.json4s.jackson.Serialization.write(scalaMap), new TypeReference[java.util.Map[String, Object]](){})