我正面临尝试为通用案例类实现JsonFormat对象的问题。
这是我的课:

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


我正在尝试使用格式为spray json的github页面提示如下:

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页面上打开一个问题。

先感谢您

最佳答案

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

在您看来,[A <: JsonFormat]表示“ A扩展JsonFormat”。

在示例中,[A :JsonFormat]表示“带有隐式AJsonFormat[A]”。它与要求隐式(但未修饰)参数(例如implicit aFormat: JsonFormat[A])相同。这是格式化类的value: T部分所必需的。

TL; DR,尝试将<:切换为:

关于json - spray-json JsonFormat案例类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26485950/

10-10 04:13