ScalaクラスからのJSONオブジェクトのレンダリングに関して簡単な質問があります。デシリアライザー(読み取り、書き込み)を実装する必要があるのはなぜですか。
私は次のケースクラスを持っています:
case class User(firstname:String, lastname:String, age:Int)
そして私のコントローラーでは:
val milo:User = new User("Sam","Fisher",23);
Json.toJson(milo);
コンパイルエラーが発生します:タイプmodels.UserのJsonデシリアライザーが見つかりません。このタイプの暗黙の書き込みまたはフォーマットを実装してみてください。
以前のプロジェクトでは、それが機能するためにクラスにリーダー、ライターオブジェクトを実装する必要があり、非常に面倒でした。
object UserWebsite {
implicit object UserWebsiteReads extends Format[UserWebsite] {
def reads(json: JsValue) = UserWebsite(
(json \ "email").as[String],
(json \ "url").as[String],
(json \ "imageurl").as[String])
def writes(ts: UserWebsite) = JsObject(Seq(
"email" -> JsString(ts.email),
"url" -> JsString(ts.url),
"imageurl" -> JsString(ts.imageurl)))
}
}