当我的case类上有option[instant]属性时,我的json读取没有编译

f4t66c6m  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(217)

如何为具有option instant属性的类编写json读取?

case class User(id: Int, joined: Option[Instant])

我的ide显示错误:
找不到参数的隐式:reads[option[instant]]

implicit val userReads: Reads[User] = (
  (__\ "id").read[Int] and 
  (__ \ "joined").read[Option[Instant]]
 )(User.apply _ )

如果我去掉这个选项,那么这个瞬间就可以了。
为什么它不允许一瞬间的选择呢?

mjqavswn

mjqavswn1#

你不应该试图解决 Option[T] 在这种情况下,使用 readNullable .

import java.time.Instant

case class User(id: Int, joined: Option[Instant])

import play.api.libs.json._
import play.api.libs.functional.syntax._

implicit val userReads: Reads[User] = (
  (__ \ "id").read[Int] and 
  (__ \ "joined").readNullable[Instant]
 )(User.apply _)

此外,在这种情况下,使用提供的宏更容易:

import java.time.Instant

case class User(id: Int, joined: Option[Instant])

import play.api.libs.json._

implicit val userReads: Reads[User] = Json.reads[User]

相关问题