我正在研究 Play Framework 2.0,它使用 Jerkson 来解析 JSON 字符串。我成功地使用它来解析不可变字符串列表,如下所示:
Json.parse( jsonStr ).as[ List[String] ]
但是当我尝试时这段代码对我不起作用
Json.parse( jsonStr ).as[ MutableList[String] ]
有谁知道如何轻松做到这一点?
最佳答案
由于 traversableReads
替换了 seqReads
in the current trunk,您的第二行将像在 Play 2.0 的 future 版本中一样工作:
implicit def traversableReads[F[_], A](implicit bf: generic.CanBuildFrom[F[_], A, F[A]], ra: Reads[A]) = new Reads[F[A]] {
def reads(json: JsValue) = json match {
case JsArray(ts) => {
val builder = bf()
for (a <- ts.map(fromJson[A](_))) {
builder += a
}
builder.result()
}
case _ => throw new RuntimeException("Collection expected")
}
}
所以如果你愿意to build Play from source ,或者等待,你很好。否则,您应该能够将上面的方法放在您自己的代码中的某处,以在范围内获得适当的 Reads
实例,或者 - 甚至更好 - 只需使用 Alexey Romanov 的解决方案,或者 - 最重要的是 - 不要不要使用 MutableList
。
关于json - 如何在 play framework 2.0 上将 scala 中的 mutableList 解析为 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088164/