2

我想从循环使用自动通用编组器到 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)

我可以为通用使用自动编组器吗?

4

1 回答 1

2

我不确定如何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)
}
于 2017-11-13T14:35:01.660 回答