Sou*_*nta 2 scala playframework playframework-2.0
我是Play(和Scala)的新手.我正在尝试编写一个调用一些Java代码的简单Play应用程序.
我想将a转换scala.collection.mutable.Map[String,Array[String]]为JSON字符串.但这显然不起作用.
基于此,我假设我要实现写入.我当前的代码(显然不正确)如下所示:
implicit val myWrites = new Writes[scala.collection.mutable.Map[String,Array[String]]] {
def writes(res: scala.collection.mutable.Map[String,Array[String]]) = {
val x = res.foreach { kv => Json.obj(
kv._1 -> ( kv._2.reduceLeft(_ + "," + _).mkString)
) }
Json.toJson(x)
}
}
Run Code Online (Sandbox Code Playgroud)
任何有助于我取得进步的指针都将受到赞赏.
您不必编写任何Writes实现.您需要做的就是将可变映射转换为不可变映射,只需调用toMap方法即可:
scala> import play.api.libs.json._
import play.api.libs.json._
scala> import scala.collection.mutable
import scala.collection.mutable
scala> val im = Map("foo" -> Array("bar", "baz"))
im: scala.collection.immutable.Map[String,Array[String]] = Map(foo -> Array(bar, baz))
scala> Json.stringify(Json.toJson(im))
res8: String = {"foo":["bar","baz"]}
scala> val mm = mutable.Map("foo" -> Array("bar", "baz"))
mm: scala.collection.mutable.Map[String,Array[String]] = Map(foo -> Array(bar, baz))
scala> Json.stringify(Json.toJson(mm))
<console>:20: error: No Json deserializer found for type scala.collection.mutable.Map[String,Array[String]]. Try to implement an implicit Writes or Format for this type.
Json.stringify(Json.toJson(mm))
^
scala> Json.stringify(Json.toJson(mm.toMap))
res10: String = {"foo":["bar","baz"]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
574 次 |
| 最近记录: |