Play Framework - как игнорировать некоторые поля для сериализации Json?

У меня кейс

case class User (
  id: Option[Long] = None,
  username: String,     
  password: Option[String] = None,
)

И вот JSON сериализатор для этого случая класса

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))
}

Но я не хочу выставлять поле пароля в ответе API. Как мне этого добиться?

Я также использую это для Slick для чтения / записи данных в соответствующей таблице, я использую это во многих местах, на уровне сервиса, на уровне контроллера, и я не хочу создавать отдельный класс для ответа API (без пароля).

1 ответ

Просто удалите поле пароля из вашего Writes:

implicit val userWrites: Writes[User] = Writes { user =>
  Json.obj(
    "id" -> user.id,
    "username" -> user.username
  )
}
Другие вопросы по тегам