Using spray 1.3.2 and spray-json 1.3.2, this should be possible.
Make sure you import (although you say what you do, but double check).
import spray.httpx.SprayJsonSupport._ import spray.json.DefaultJsonProtocol._
Consider the following example:
import akka.actor.{ActorSystem, Props, Actor} import akka.io.IO import spray.can.Http import spray.routing.HttpService import akka.pattern.ask import akka.util.Timeout import scala.concurrent.duration._ import spray.httpx.SprayJsonSupport._ import spray.json.DefaultJsonProtocol._ object Boot extends App { implicit val system = ActorSystem("so") val testActor = system.actorOf(Props[TestActor]) implicit val timeout = Timeout(5.seconds) IO(Http) ? Http.Bind(testActor, interface = "0.0.0.0", port = 5000) } class TestActor extends Actor with HttpService { def receive = runRoute(route) def actorRefFactory = context val route = get{ path("ping") { complete(List("OK")) } } }
The /ping request returns ["OK"] , which looks fine.
For reference build.sbt below.
build.sbt
val akkaVersion = "2.3.5" val sprayVersion = "1.3.2" resolvers += "spray" at "http://repo.spray.io/" scalaVersion := "2.11.5" scalacOptions := Seq("-feature", "-unchecked", "-deprecation", "-encoding", "utf8") libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor" % akkaVersion, "io.spray" %% "spray-can" % sprayVersion, "io.spray" %% "spray-routing" % sprayVersion, "io.spray" %% "spray-client" % sprayVersion, "io.spray" %% "spray-json" % "1.3.1" )
source share