我想从圈子中使用自动通用marshaller到Json:
def printTest[T<: Product](resourse: ResourcePartTest[T]): Unit = {
import io.circe.generic.auto._
import io.circe.syntax._
println(resourse.asJson)
}
但我可以执行:
Error:(29, 22) could not find implicit value for parameter encoder: io.circe.Encoder[com.moex.regulatory.standards.intermediate.v23.ResourcePartTest[T]]
println(resourse.asJson)
Error:(29, 22) not enough arguments for method asJson: (implicit encoder: io.circe.Encoder[com.moex.regulatory.standards.intermediate.v23.ResourcePartTest[T]])io.circe.Json.
Unspecified value parameter encoder.
println(resourse.asJson)
我可以为Generic使用自动编组器吗?
答案 0 :(得分:1)
我不确定如何定义ResourceParTest
,但这可以通过将泛型派生导入移到方法之外并要求Encoder[ResourcePartTest[T]]
作为证据来实现:
import io.circe.Encoder
import io.circe.generic.auto._
import io.circe.syntax._
sealed trait ResourcePartTest[T]
case class Foo() extends ResourcePartTest[(Int, Int)]
def printTest[T <: Product](resourse:
ResourcePartTest[T])(implicit ev: Encoder[ResourcePartTest[T]]): Unit = {
println(resourse.asJson)
}