我有一个案例类,其中每个字段都是可选的,例如:
case class Foo(name: Option[String],
phone: Option[String],
email: Option[String])
我试图为我的案例类创建一个手动解码器,发现解码器类似于:
implicit val decoder: Decoder[Foo] = (c: HCursor) => {
for {
name <- c.downField("name").as[String]
phone <- c.downField("phone").as[String]
email <- c.downField("email").as[String]
} yield {
new Foo(name, phone, email)
}
}
但是检查downField
方法,如果没有设置该字段,光标会切换到FailedCursor
,所以会出现错误。
None
如果未定义某些字段,我怎么能期望它是可选的并返回?