在使用 play 框架时,我似乎对如何正确反序列化 json 感到困惑。使用 jerkson,您似乎只需要定义一个案例类,然后自动反序列化一个 json 字符串(从 jerkson 文档中窃取)。
case class Person(id: Long, name: String)
parse[Person]("""{"id":1,"name":"Coda"}""") //=> Person(1,"Coda")
但是,使用 play 框架,您必须编写大量样板代码来做同样的事情。例如从他们的文档中。
case class Foo(name: String, entry: Int)
object Foo {
implicit object FopReads extends Format[Foo] {
def reads(json: JsValue) = Foo(
(json \ "name").as[String],
(json \ "entry").as[Int])
def writes(ts: Foo) = JsObject(Seq(
"name" -> JsString(ts.name),
"entry" -> JsNumber(ts.entry)))
}
}
这似乎需要做更多的工作,所以我认为我要么没有正确使用它,要么不太了解这样做的好处。有没有捷径让我不必编写所有这些代码?如果不是,我应该在我的 Action 中使用 jerkson 来解析传入的 json 字符串吗?似乎 asText 正在返回一个空白字符串,即使 asJson 工作得很好......这让我相信我肯定做错了什么。
谢谢