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