Json 带Scala的GSON:Scala Scala.collection.mutable.HashMap与java.util.HashMap

Json 带Scala的GSON:Scala Scala.collection.mutable.HashMap与java.util.HashMap,json,scala,gson,Json,Scala,Gson,我将Scala 2.10与最新版本的GSON一起使用。我想将JSON字符串反序列化为scala.collection.mutable.HashMap。但是map的值为空,只有带有serialVersionUID的HashMap,没有更多字段 import com.google.gson.Gson import com.google.gson.reflect.TypeToken import scala.collection.mutable.HashMap object MyTest { d

我将Scala 2.10与最新版本的GSON一起使用。我想将JSON字符串反序列化为
scala.collection.mutable.HashMap
。但是
map
的值为空,只有带有
serialVersionUID
HashMap
,没有更多字段

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
来尝试它,效果很好。我有一张带有条目的
地图
。但是为什么它不能与Scala HashMap一起工作呢?

我不知道GSON,但它是一个Java库,所以我看不出它为什么能理解Scala类型

我想您可以使用
Scala.collections.JavaConverters
Scala.collection.javaconvertions
提供的转换将JSON反序列化为Java映射,并将其包装为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