은 내가 '동영상'정보를 가진 사용자 정의 :argonaut를 사용하여 선택적 사용자 정의 필드를 구문 분석하는 방법은 무엇입니까?
case class User(name:String, video: Option[Video])
case class Video(title:String, url:String)
을 그리고 우리는 이러한 JSON 있습니다
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
}
: 나는 그것을 구문 분석과 같은 코드를 사용할 수 있습니다
{
"name": "somename",
"video": {
"title": "my-video",
"url": "https://youtube.com/watch?v=123123"
}
}
을
DecodeVideo
에서 "title"과 "url"이 모두 제공된 경우에만 비디오를 제공하고 싶다는 것을 알 수 있습니다.
json에 '동영상'섹션이 포함 된 경우 제대로 작동합니다. 그러나 그렇지 않다면, argonaut는 "비디오"섹션이 제공되지 않는다고보고 할 것입니다.
"비디오"를 선택하는 방법은 무엇입니까?
어떤 argonaut 버전을 사용하고 있습니까? 나는 당신이 사용하고있는이'as [T]'메서드 나 그들의 웹 사이트에있는 deserialization에 대한이 접근법에 대한 문서를 찾을 수 없다. – Nate