9

次のように、すべてのフィールドがオプションのケース クラスがあります。

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一部のフィールドがオプションであり、定義されていない場合に返されると期待するにはどうすればよいですか?

4

1 に答える 1