json を正しくデシリアライズする方法について、play フレームワークを使用するときに混乱しているようです。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)))
}
}
これはより多くの作業のように思えるので、正しく使用していないか、この方法で行う利点をよく理解していないと思います。このコードをすべて書かなくても済むようにするショートカットはありますか? そうでない場合、アクションで jerkson を使用して着信 json 文字列を解析する必要がありますか? asJsonが正常に機能している場合でも、asTextが空の文字列を返しているようです...これは、私が間違いなく何か間違ったことをしていると信じさせます。
ありがとう