spray-json的JsonFormat案例类

3

我正试图为一个泛型案例类实现JsonFormat对象,但遇到了这个问题。

这是我的类:

case class SimpleQuery[T](field : String, op : Operator, value : T) extends Query{
  def getType = ????
}

我将尝试使用 GitHub 上 spray json 页面提示的格式,如下所示:

implicit def SimpleQueryJsonFormat[A <: JsonFormat] = jsonFormat4(SimpleQuery.apply[A])

但我遇到了这个编译器错误。
trait JsonFormat takes type parameters

以下是来自spray-json的github页面的示例:

示例如下:

case class NamedList[A](name: String, items: List[A])

object MyJsonProtocol extends DefaultJsonProtocol {
  implicit def namedListFormat[A :JsonFormat] = jsonFormat2(NamedList.apply[A])
}

这似乎与我的很相似。

我也会在 github 页面上开个 issue。

提前感谢你。

1个回答

0

我认为您可能会混淆定义的类型参数中的<::

在您的代码中,[A <: JsonFormat]表示"A扩展了JsonFormat"。

在这个例子中,[A :JsonFormat]表示"A带有一个隐式的JsonFormat[A]"。这与需要一个隐式(但未命名)参数相同,例如implicit aFormat: JsonFormat[A]。这是格式化类中的value: T部分所需的。

简而言之,请尝试将<:切换为:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接