喷涂编组自定义对象

时间:2016-01-30 11:59:50

标签: marshalling spray spray-json

我试图在我的一个回复中将一些自定义对象封送到JSON,并且似乎无法使逻辑正确。我怀疑这是一个直截了当的问题,但我似乎无法在任何地方找到解决方案。

我有以下哪个很好......

case class MyKeyResponse(success:Boolean, key:String, 
  key_id:Int, key_description:String)
object MyKeyJsonResponseProtocols extends DefaultJsonProtocol {
  implicit val responseFormat = jsonFormat4(AppKeyResponse)
}

然后我声明以下内容,用于包装从数据库查询返回的上述MyKey对象的集合...

case class MyKeysResponse(success:Boolean, appKeys:Seq[MyKey])
object MyKeysJsonResponseProtocols extends DefaultJsonProtocol {
  implicit val responseFormat = jsonFormat2(AppKeysResponse)
}

但是我收到以下错误......

not enough arguments for method jsonFormat2: 
(implicit evidence$4: …   MyKeysJsonResponseProtocols.JF[Boolean],     
implicit evidence$5: …MyKeysJsonResponseProtocols.JF[Seq[…   
MyKeys.AppKey]], implicit evidence$6: ClassManifest[…
MyKeysResponse])spray.json.RootJsonFormat[…MyKeysResponse]. Unspecified 
value parameters evidence$5, evidence$6.    MyKeysResponse.scala

和编组错误。

任何帮助将不胜感激!

由于

1 个答案:

答案 0 :(得分:0)

我的问题实际上是相当直接的,吸取了教训! 我的每个marshallers都使用相同的隐式变量名...

object MyJsonResponseProtocol1 extends DefaultJsonProtocol {
  implicit val responseFormat = jsonFormat2(...)
}

object MyJsonResponseProtocol2 extends DefaultJsonProtocol {
  implicit val responseFormat = jsonFormat2(...)
}

等等......当我导入它们时,它们显然是相互矛盾的。所以我只是将它们重命名。

相关问题