我需要在JSON中进行序列化 - 密封的特征层次结构,它看起来像:
sealed trait Foo[T]
case class Bar(x: Int) extends Foo[Int]
case class Baz(s: String) extends Foo[String]
case object Bah extends Foo[Void]
我正在使用play-json-variants为此serialiati https://github.com/julienrf/play-json-variants分叉到https://github.com/mavarazy/play-json-variants。我做了必要的修改,或者我认为:)
宏签名如下:
object Variants {
/**
* @tparam A The base type of a case class hierarchy.
* @return A [[play.api.libs.json.Format]] for the type hierarchy of `A`.
*/
def format[A]: Format[A] = macro Impl.format[A]
问题是我无法弄清楚implicit function
的签名应该是什么。
我试过
implicit def fooFormat[A]() = Variants.format[Foo[A]]
implicit def fooFormat[A <: Foo[A]]() = Variants.format[A]
但是所有人都抱怨特质Foo接受类型参数错误。
这是什么签名?