Tôi có một câu hỏi đơn giản về việc hiển thị đối tượng JSON từ một lớp Scala. Tại sao tôi phải thực hiện deserializer (đọc, viết).Hiển thị JSON bằng Play! và Scala
Tôi có lớp trường hợp sau đây:
case class User(firstname:String, lastname:String, age:Int)
Và trong bộ điều khiển của tôi:
val milo:User = new User("Sam","Fisher",23);
Json.toJson(milo);
tôi nhận được lỗi biên dịch: Không Json deserializer tìm thấy cho loại models.User. Hãy thử triển khai một Writes hoặc định dạng tiềm ẩn cho loại này.
Trong dự án trước đây của tôi, tôi đã phải thực hiện một người đọc, đối tượng nhà văn trong lớp cho nó để làm việc và tôi thấy nó rất khó chịu.
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)))
}
}