覆盖播放的值 JSON 组合器写入
Overwrite value of Play JSON Combinator Writes
假设我json这样写
implicit val userWrites: Writes[User] = (
(__ \ "name").write[String] ~
(__ \ "email").write[String] ~
(__ \ "encryptedPassword").write[String] ~
(__ \ "id").writeNullable[Long]
)(unlift(User.unapply))
如果我不想打印出密码,而只是打印一个字符串 "hidden"
,我该如何使用组合器实现这一点?
我正在寻找与此类似的解决方案
implicit val userWrites: Writes[User] = (
(__ \ "name").write[String] ~
(__ \ "email").write[String] ~
(__ \ "encryptedPassword").write[String](Writes.pure("hidden")) ~
(__ \ "id").writeNullable[Long]
)(unlift(User.unapply))
你可以这样做:
implicit val userWrites = new Writes[User] {
override def writes(user: User): JsValue = Json.obj(
"name" -> user.name,
"email" -> user.email,
"encryptedPassword" -> "hidden",
"id" -> user.id
)
}
这应该有效:
implicit val userWrites: Writes[User] = (
(__ \ "name").write[String] ~
(__ \ "email").write[String] ~
(__ \ "encryptedPassword").write[String](Writes((_: String) => JsString("hidden"))) ~
(__ \ "id").writeNullable[Long]
)(unlift(User.unapply))
假设我json这样写
implicit val userWrites: Writes[User] = (
(__ \ "name").write[String] ~
(__ \ "email").write[String] ~
(__ \ "encryptedPassword").write[String] ~
(__ \ "id").writeNullable[Long]
)(unlift(User.unapply))
如果我不想打印出密码,而只是打印一个字符串 "hidden"
,我该如何使用组合器实现这一点?
我正在寻找与此类似的解决方案
implicit val userWrites: Writes[User] = (
(__ \ "name").write[String] ~
(__ \ "email").write[String] ~
(__ \ "encryptedPassword").write[String](Writes.pure("hidden")) ~
(__ \ "id").writeNullable[Long]
)(unlift(User.unapply))
你可以这样做:
implicit val userWrites = new Writes[User] {
override def writes(user: User): JsValue = Json.obj(
"name" -> user.name,
"email" -> user.email,
"encryptedPassword" -> "hidden",
"id" -> user.id
)
}
这应该有效:
implicit val userWrites: Writes[User] = (
(__ \ "name").write[String] ~
(__ \ "email").write[String] ~
(__ \ "encryptedPassword").write[String](Writes((_: String) => JsString("hidden"))) ~
(__ \ "id").writeNullable[Long]
)(unlift(User.unapply))