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

标签 playframework jsonserializer

我有案例课

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 响应中公开 password 字段。我怎样才能实现它?

我也使用它来让 Slick 在适当的表中读/写数据,我在很多地方使用它,服务层, Controller 层,我不想为 api 响应创建单独的类(没有密码)。

最佳答案

只需从您的 Writes 中删除密码字段:

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

关于playframework - Play Framework - 如何忽略 Json 序列化的某些字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39089851/

相关文章:

java - Play + Ebean : Changes to the model + database

java - playframework ebean 中的自定义桥接表

playframework - 如何在 Play 2.0 表单中添加全局表单错误以指示乐观锁失败

Python-如何将 Feedparser 对象传递给 celery 任务?

java - 使用 Play Framework 调用带有日期的 Controller 方法

java - Jackson 枚举序列化和反序列化

c# - Json Formatting.Indented 使用 Web Api Controller, ASP.NET MVC

java - Jackson2 Java转Json数组创建数组时忽略字段名称

java - 使用 JSONSerializer.toJava 将 json 转换为 java 对象后始终获取日期字段的值作为当前日期

scala - 从2.2迁移到2.3 : No implicit view available from Any