Json 带Scala的GSON:Scala Scala.collection.mutable.HashMap与java.util.HashMap
我将Scala 2.10与最新版本的GSON一起使用。我想将JSON字符串反序列化为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.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