我可以在方法中将自定义类型作为参数传递并使用它从外部 API读取 JSON吗?所以如果我有这个:
trait ApiInfo
case class SunInfoResults(sunrise: String, sunset: String, solar_noon: String, day_length: Long, civil_twilight_begin: String, civil_twilight_end: String, nautical_twilight_begin: String, nautical_twilight_end: String, astronomical_twilight_begin: String, astronomical_twilight_end: String)
case class SunInfo(results: SunInfoResults, status: String) extends ApiInfo
case class TvInfo(url: String, name: String, gender: String, culture: String, born: String, died: String, titles: Array[String], aliases: Array[String], father: String, mother: String, spouse: String, allegiances: Array[String], books: Array[String], povBooks: Array[String], tvSeries: Array[String], playedBy: Array[String]) extends ApiInfo
在对外部 API 进行服务调用之前,我需要声明一个隐式序列化 JSON。那么我将如何指定需要映射到的类(在 Play 2.5 中使用 JSON 自动映射)?我确信这一定是可能的,因为 Scala 是建立在减少重复代码的概念之上的——如果没有这样的解决方案,我将不得不这样做。这是我在将任何自定义类型传递到时遇到的问题:
implicit val infoReads = Json.reads[p] // where p is SunInfo or TvInfo
在对类型主题进行一些研究之后还包括在内;我想知道是否必须使用幻像类型,因为在正确映射到 JSON 响应之前,不会实例化该类。