Play Framework - 如何忽略Json序列化的某些字段?

Tei*_*raz 2 jsonserializer playframework

我有案例课

case class User (
  id: Option[Long] = None,
  username: String,     
  password: Option[String] = None,
)
Run Code Online (Sandbox Code Playgroud)

这个案例类是json serialiser

object User {
  implicit val userWrites: Writes[User] = (
      (JsPath \ "id").write[Option[Long]] and
      (JsPath \ "username").write[String] and     
      (JsPath \ "password").write[Option[String]] and
    )(unlift(User.unapply))
}
Run Code Online (Sandbox Code Playgroud)

但我不想在api响应中公开密码字段.我怎样才能实现它?

我也使用这个用于Slick在适当的表中读/写数据,我在许多地方,服务层,控制器层使用它,我不想为api响应创建单独的类(没有密码).

vde*_*gue 7

只需从以下位置删除密码字段Writes:

implicit val userWrites: Writes[User] = Writes { user =>
  Json.obj(
    "id" -> user.id,
    "username" -> user.username
  )
}
Run Code Online (Sandbox Code Playgroud)