我有一个案例类,其中每个字段都是可选的,比如:
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
,该怎么办?