Я хочу предоставить кодировщики JSON для следующего класса case:
import io.circe.generic.extras.Configuration
final case class Hello[T](
source: String,
version: Int = 1,
data: T
)
object Hello {
implicit val configuration: Configuration = Configuration.default.withDefaults
}
Обычно я бы вызвал deriveEncoder[A]
в сопутствующем объекте, но здесь это не работает, поскольку здесь нет ссылки или Encoder
для T
.
Тип Hello
будет предоставляться клиентам как библиотека, поэтому я хотел бы сделать как можно больше шаблонов в этом типе, а не зависеть от клиентского кода, предоставляющего кодировщик и декодер. Есть ли идиоматическое решение этой проблемы с помощью circe, чтобы клиенты предоставляли кодировщик / декодер для T
, и это используется для получения кодировщика / декодера для Hello[T]
?