could not find implicit value for parameter marshaller: spray.httpx.marshalling.ToResponseMarshaller

谁说胖子不能爱 提交于 2019-12-19 09:50:07

问题


I'm using

val akkaV = "2.2.3"
val sprayV = "1.2.0"
Seq(
  "io.spray"            %   "spray-can"     % sprayV,
  "io.spray"            %   "spray-routing" % sprayV,
  "io.spray"          %%  "spray-json"    % "1.2.5",
  "io.spray"            %   "spray-testkit" % sprayV,
  "com.typesafe.akka"   %%  "akka-actor"    % akkaV,
  "com.typesafe.akka"   %%  "akka-testkit"  % akkaV,

And getting this error:

could not find implicit value for parameter marshaller: spray.httpx.marshalling.ToResponseMarshaller[List[org.bwi.models.Cluster]]

with this code:

object JsonImplicits extends DefaultJsonProtocol {
val impCluster = jsonFormat2(Cluster)

}

trait ToolsService extends HttpService with spray.httpx.SprayJsonSupport {

val myRoute = {

    import JsonImplicits._

    path("") { get { getFromResource("tools.html") } } ~
        pathPrefix("css") { get { getFromResourceDirectory("css") } } ~
        pathPrefix("fonts") { get { getFromResourceDirectory("fonts") } } ~
        pathPrefix("js") { get { getFromResourceDirectory("js") } } ~
        path("clusters") {
            get {
                complete {
                    val result: List[Cluster] = List(Cluster("1", "1 d"), Cluster("2", "2 d"), Cluster("3", "3 d"))
                    result //*****   ERROR OCCURS HERE *****
                }
            }
        }
}

}

I've tried the suggestion on this question but it did not work, same error.

I can't seem to figure out what the implicit I need to import is. Any help would be appreciated.


回答1:


You need to make sure that the implicit JsonFormat for the Cluster type is in scope, so that SprayJsonSupport knows how to marshall that type. With that you should automatically get support for marshaling List[Cluster] from the default formats.

In the posted code val impCluster = jsonFormat2(Cluster) defines the JsonFormat, but it is not marked as implicit, so the typeclass cannot be implicitly resolved. Changing it to

implicit val impCluster = jsonFormat2(Cluster)

should fix the issue.



来源:https://stackoverflow.com/questions/20408734/could-not-find-implicit-value-for-parameter-marshaller-spray-httpx-marshalling

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!