GSON with Scala: Scala scala.collection.mutable.HashMap vs.



我使用的是Scala 2.10和最新版本的GSON。我想把一个JSON字符串反序列化成一个scala.collection.mutable.HashMap。但map的值为空,只有一个HashMap和一个serialVersionUID,没有其他字段。

import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import scala.collection.mutable.HashMap
object MyTest {
  def main(args: Array[String]) {
    val gson = new Gson
    val jsonString = "{"test1":"value-test1","test2":"value-test2"}"
    val mapType = new TypeToken[HashMap[String, String]] {}.getType
    val map = gson.fromJson(jsonString, mapType).asInstanceOf[HashMap[String, String]]
  }
}

尝试用java.util.HashMap代替scala.collection.mutable.HashMap,它可以工作。我有一个包含条目的map。但是为什么它不能与Scala HashMap一起工作呢?

我不知道GSON,但它是一个Java库,所以我不明白为什么它会理解Scala类型。

我猜你可以将JSON反序列化为Java映射,然后使用scala.collections.JavaConvertersscala.collection.JavaConversions提供的转换将其包装为Scala映射。例如:
import java.{util => ju}
import scala.collection.JavaConverters._
val gson = new Gson
val jsonString = "{"test1":"value-test1","test2":"value-test2"}"
val mapType = new TypeToken[ju.HashMap[String, String]] {}.getType
val map = gson.fromJson[ju.Map[String, String]](jsonString, mapType).asScala

最新更新