gpt4 book ai didi

json - GSON 与 Scala : Scala scala. collection.mutable.HashMap 与 java.util.HashMap

转载 作者:行者123 更新时间:2023-12-01 23:38:28 27 4
gpt4 key购买 nike

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

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.JavaConverters 或 scala.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

关于json - GSON 与 Scala : Scala scala. collection.mutable.HashMap 与 java.util.HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15311813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com