如何在hash中将hashMap转换为json对象?

时间:2014-04-07 11:18:15

标签: json scala playframework-2.0 hashmap

我想将hashmap转换为json对象,我的hashmap结构如下所示:

def res=Action{ implicit request=>
  var response=new HashMap[String,Map[String,String]]
  response=//etc .......
  .
  .
  .
  Ok(write(response))
}

它没有用。

4 个答案:

答案 0 :(得分:4)

试试这个:

Ok(Json.toJson(response.toMap))

这会将您的HashMap转换为Map,无需额外代码即可将其写为json。

答案 1 :(得分:3)

另一种解决方案是使用JSON4s。 [https://github.com/json4s/json4s] 作为额外的收获,它为您提供了一个不错的DSL,使用杰克逊的能力以及使用杰克逊进行反序列化的好方法。

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}

答案 2 :(得分:1)

试试这个

val data = response.map(value=> value._1 -> Json.toJson(value._2))

Ok(json.toJson(data.toMap))

答案 3 :(得分: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"}}