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.
You need to make sure that the implicit
JsonFormat
for theCluster
type is in scope, so thatSprayJsonSupport
knows how to marshall that type. With that you should automatically get support for marshalingList[Cluster]
from the default formats.In the posted code
val impCluster = jsonFormat2(Cluster)
defines theJsonFormat
, but it is not marked asimplicit
, so the typeclass cannot be implicitly resolved. Changing it toshould fix the issue.