在使用关于如何正确反序列化json的框架时,我似乎很困惑。使用jerkson它看起来像你只需要定义一个case类,然后自动反序列化一个json字符串(从jerkson文档中窃取)。使用Play框架进行反序列化ScalaJsonGenerics vs Jerkson
case class Person(id: Long, name: String)
parse[Person]("""{"id":1,"name":"Coda"}""") //=> Person(1,"Coda")
但是,有了游戏框架,你必须写很多锅炉板代码来做同样的事情。例如从他们的文档。
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工作的很好......这导致我相信我确实做错了什么。
谢谢
有谁知道这个吗?我做了一些贫民窟,只是混合了这两个概念,像这样'def reads(json:JsValue)= Json.parse [Cacheref](json.toString)'。似乎它不可能是正确的 – dhrod5