Scala Obiekt opcji w innym obiekcie opcji

Mam model, który ma niektóre pola opcji, które zawierają inne pola opcji. Na przykład:

case class First(second: Option[Second], name: Option[String])
case class Second(third: Option[Third], title: Option[String])
case class Third(numberOfSmth: Option[Int])

Otrzymuję te dane z zewnętrznych JSON i czasami te dane mogą zawierać wartości zerowe, co było powodem takiego modelu.

Pytanie brzmi: jaki jest najlepszy sposób na uzyskanie najgłębszego pola?

First.get.second.get.third.get.numberOfSmth.get

Powyższa metoda wygląda naprawdę brzydko i może powodować wyjątek, jeśli jeden z obiektów będzie Brak. Szukałem w bibliotece Scalaz, ale nie znalazłem lepszego sposobu, aby to zrobić.

Jakieś pomysły? Z góry dziękuję.

questionAnswers(4)

yourAnswerToTheQuestion