Я хотел бы создать конвертер операций чтения JSON с параметром типа, например так:
case class AClass(name: String, age: Int)
case class AClass(name: String)
object GeneralReadsType extends Enumeration {
type GeneralReadsType = Value
val AReadType = Value("atype")
val BReadType = Value("btype")
}
implicit val repoReads: Reads[GeneralReadsType.GeneralReadsType] = {
GeneralReadsType match {
case GeneralReadsType.AReadType => (
(JsPath \ "name").read[String] and
(JsPath \ "age").read[Int]
) (GeneralReadsType.AReadType.apply _)
case GeneralReadsType.BReadType => (
(JsPath \ "name").read[String]
) (GeneralReadsType.BReadType.apply _)
}
}
Но когда я пытаюсь использовать его в
def getResponse[GeneralReadsType](request: WSRequest): Future[List[GeneralReadsType]] = {
request.get().map {
case response if response.status == 200 => {
(response.json).validate[List[GeneralReadsType]] match {
case JsSuccess(items: List[GeneralReadsType], _) => items
case _: JsError => List[GeneralReadsType]()
}
}
case _ => List[GeneralReadsType]()
}
}
getResponse[AReadType](request)
, я получаю ошибку компиляции
Не найден десериализатор Json для типа List [GeneralReadsType]. Попробуйте реализовать неявное чтение или форматирование для этого типа.
Итак, как этого достичь?
Спасибо!