Если вы имеете дело со значениями, которые могут быть null
, важно обернуть их, используя Option
.Объект Option
проверит null
значения и вернет None
.
Однако, используя Some
, не проверит null
, и вы можете получить Some(null)
.
Если у вас есть опция, которая может быть Some(null)
, вы можете очистить ее, снова обернув ее в Option
, используя flatMap(Option(_))
Например:
val s: String = "x"
val n: String = null
Option(s) // Some("x")
Option(n) // None
Some(s) // Some("x")
Some(n) // Some(null) <- NB
Some(n).flatMap(Option(_)) // None
Обновление после комментариев
Из комментариев видно, что null
на самом деле находится в JSON и предположительно происходит от анализа None
, а не от Scala null
.В этом случае вы можете просто проверить None
как обычно:
check match {
case MyClass(None, _) =>
// Error: missing Safe value
case MyClass(_, None) =>
// Error: missing Threat value
case _ =>
complete(ToResponseMarshallable(check))
}