gpt4 book ai didi

scala - 实现 Play 2.1.1 的写入

转载 作者:行者123 更新时间:2023-12-02 21:43:19 26 4
gpt4 key购买 nike

我是 Play(和 Scala)新手。我正在尝试编写一个调用一些 Java 代码的简单 Play 应用程序。

我想将 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)

}


}

任何能帮助我取得进步的指示将不胜感激。

最佳答案

您不必编写任何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"]}

关于scala - 实现 Play 2.1.1 的写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19992824/

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