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