3

GSON の最新バージョンで Scala 2.10 を使用しています。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 で機能しないのはなぜでしょうか?

4

1 に答える 1

6

GSON はわかりませんが、これは Java ライブラリなので、Scala 型を理解する理由がわかりません。

scala.collections.JavaConvertersまたはによって提供される変換を使用して、JSON を Java マップにデシリアライズし、Scala マップにラップできると思いますscala.collection.JavaConversions。例えば:

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
于 2013-03-09T15:00:07.643 に答える