在使用關於如何正確反序列化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