Я определил пользователь, который имеет "видео" информация:Как использовать аргонавт для анализа необязательного настраиваемого поля?
case class User(name:String, video: Option[Video])
case class Video(title:String, url:String)
И у нас есть такая JSON:
{
"name": "somename",
"video": {
"title": "my-video",
"url": "https://youtube.com/watch?v=123123"
}
}
я могу использовать такой код, чтобы разобрать его:
implicit def DecodeUser: DecodeJson[User] = for {
name <- as[String]("name")
video <- as[Option[Video]]("video")
} yield User(name, video)
implicit def DecodeVideo: DecodeJson[Option[Video]] = for {
titleOpt <- as[Option[String]]("title")
urlOpt <- as[Option[String]]("url")
} yield (titleOpt, urlOpt) match {
case (Some(title), Some(url)) => Video(title, url)
case _ => None
}
Из DecodeVideo
вы можете видеть, что я просто хочу предоставить видео, только если предоставлены оба «заголовка» и «url».
Это хорошо работает, если в json содержится раздел «видео». Но если это не так, аргонавт сообщит, что раздел «видео» не предоставляется.
Как сделать «видео» необязательным?
Какую версию аргонавта вы используете? Я не могу найти этот метод 'как [T]', который вы используете, или любую документацию по этому подходу к десериализации на своем веб-сайте. – Nate