我正面临尝试为通用案例类实现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]
表示“带有隐式A
的JsonFormat[A]
”。它与要求隐式(但未修饰)参数(例如implicit aFormat: JsonFormat[A]
)相同。这是格式化类的value: T
部分所必需的。
TL; DR,尝试将<:
切换为:
关于json - spray-json JsonFormat案例类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26485950/