【问题标题】:Constant value in Scala Play JSON ReadsScala Play JSON 读取中的常量值
【发布时间】:2014-10-15 13:53:45
【问题描述】:

我想在通过 JSON 读取构造对象时使用常量值。

例如,该类将是:

case class UserInfo(
  userId: Long = -1, 
  firstName: Option[String] = None,
  lastName:  Option[String] = None
)

阅读内容是:

   implicit val userRead: Reads[UserInfo] = (
      (JsPath \ "userId").read[Long] and
      (JsPath \ "firstName").readNullable[String] and
      (JsPath \ "lastName").readNullable[String] 
    )(UserInfo.apply _)

但我不想在 JSON 对象中指定 userId 的值。 我将如何对 Reads 进行编码,以便始终在 UserInfo 对象中创建 -1 的值,而不在正在读取的 JSON 对象中指定它?

【问题讨论】:

    标签: json scala playframework playframework-json


    【解决方案1】:

    使用Reads.pure

    implicit val userRead: Reads[UserInfo] = (
      Reads.pure(-1L) and
      (JsPath \ "firstName").readNullable[String] and
      (JsPath \ "lastName").readNullable[String] 
    )(UserInfo.apply _)
    

    【讨论】:

      【解决方案2】:

      谢谢!

      我必须做一个小改动才能将其强制为 Long:

      implicit val userRead: Reads[UserInfo] = (
        Reads.pure(-1:Long) and
        (JsPath \ "firstName").readNullable[String] and
        (JsPath \ "lastName").readNullable[String] 
      )(UserInfo.apply _)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-31
        • 2022-01-22
        相关资源
        最近更新 更多