如何在Scala中将HashMap转换为JSON对象?

4
我想将哈希映射转换为JSON对象,我的哈希映射结构如下所示:
def res=Action{ implicit request=>
  var response=new HashMap[String,Map[String,String]]
  response=//etc .......
  .
  .
  .
  Ok(write(response))
}

但是它没有起作用。


请查看Play框架内置的JSON工具,然后应用这些知识。 - om-nom-nom
这取决于您的要求...您能展示一下您想要哪种类型的格式吗? - Ashish Ratan
4个回答

4

试试这个:

Ok(Json.toJson(response.toMap))

这会将你的 HashMap 转换为一个可直接写成 json 的 Map,无需额外的代码。

5
看起来你导入了错误的包。请确保你导入了 play.api.libs.json.Json - serejja
它不能正常工作,它给了我{"keyValue":"LoadFactor:0.75"....没有给出键的值。 - Rohit Sharma
1
为什么要使用java.util.Mapscala.collection.immutable.Map是唯一可以在不实现写入或格式的情况下进行序列化的Map。 - serejja
谢谢您先生,java.util.Map 转换为 scala.collection.immutable.Map...它正在工作... - Rohit Sharma
为什么你同时使用Lift的JSON库和Play的JSON库?这只会导致混淆。请放弃Lift的部分。 - Ryan
显示剩余3条评论

3

另一个解决方案是使用JSON4s。[https://github.com/json4s/json4s] 它提供了一个漂亮的DSL,可以选择使用Jackson或不使用,并且可以轻松地对JSON进行反序列化。

scala> import org.json4s.jackson.Serialization
import org.json4s.jackson.Serialization

scala> implicit val formats = Serialization.formats(NoTypeHints)
formats: org.json4s.Formats{val dateFormat: org.json4s.DateFormat; val typeHints:org.json4s.TypeHints} = org.json4s.Serialization$$anon$1@f40c08d

scala> Serialization.write(Map("test" -> "a", "test 2" -> 2))
res1: String = {"test":"a","test 2":2}

1
尝试像这样
val data = response.map(value=> value._1 -> Json.toJson(value._2))

Ok(json.toJson(data.toMap))

它在编译时出错了............找不到Java.util.map [String,String]类型的JSON反序列化器。尝试为此类型实现隐式写入或格式。 - Rohit Sharma
然后尝试将map转换为list,如下所示:response.map(value=> value._1 -> Json.toJson(value._2.toList)) - S.Karthik

0
You can try like this....

var ls: ListBuffer[(String, Map[String, String])] = ListBuffer()
val res = list1.toList.iterator

while (res.hasNext) {

  ls += (("id", getMyMap().toMap))
}
println(ls);
ls.toList
ok(write(ls.toMap))


def getMyMap(): scala.collection.mutable.Map[String, String] = {

var m=scala.collection.mutable.Map("Address" -> "strt1", "Mobile" -> 98974)
 m
}

输出:

{"0":{"Address":"strt1","Mobile":"98974"}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接