Недавно я пытался сделать простой код Scala для анализа данных COVID - 19, я вызвал один API и привел структуру этого вызова JSON API к моим Scala классам case. Если я не применяю фильтры, код работает должным образом. Когда я пытаюсь применить фильтр, он не работает. Немного смущает. Почему не работает.
case class RegionData(region: Option[String], totalInfected: Option[String], recovered: Option[String], deceased: Option[String])
case class Data(activeCases: String, recovered: String, deaths: String, totalCases: String, sourceUrl: String, lastUpdatedAtApify: String, readMe: String, regionData: Option[List[RegionData]])
Это мои классы для Scala.
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.scala.DefaultScalaModule
import scala.io.Source
object CovidAnalytics {
val objectMapper: ObjectMapper = new ObjectMapper()
objectMapper.registerModule(DefaultScalaModule)
def main(args: Array[String]): Unit = {
val getData: String = Source.fromURL("https://api.apify.com/v2/datasets/58a4VXwBBF0HtxuQa/items?format=json&clean=1").mkString
val data: List[Data] = objectMapper.readValue(getData, classOf[List[Data]])
//This is working
println(data)
val filter = data.filter(e => e.deaths != "")
//This is not working (Confused!!!)
println(filter)
}
}
Исключение в потоке «main» java .lang.ClassCastException: scala .collection.immutable.HashMap $ HashTrieMap не может быть преобразован в com.example.analytics.Data в com. .example.analytics.CovidAnalytics $$ anonfun $ 1.apply (CovidAnalytics. scala: 18) в scala .collection.TraversableLike $$ anonfun $ filterImpl $ 1.apply (TraversableLike. scala: 248) в scala .collection.immutable.List.foreach (List. scala: 392) в scala .collection.TraversableLike $ class.filterImpl (TraversableLike. scala: 247) в scala .collection.TraversableLike $ class.filter (TraversableLike. scala: 259) в scala .collection.AbstractTraversable.filter (Traversable. scala: 104) в com.example.analytics.CovidAnalytics $ .main (CovidAnalytics. scala: 18) в com .example.analytics.CovidAnalytics.main (CovidAnalytics. scala)