首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >喷雾采集ToResponseMarshallable

喷雾采集ToResponseMarshallable
EN

Stack Overflow用户
提问于 2015-02-18 02:43:33
回答 3查看 5.4K关注 0票数 6

我正试图从我的喷雾路线指令中返回一个列表。

代码语言:javascript
复制
complete {
  List("hello")
}

但是,我发现了一个错误-

代码语言:javascript
复制
Expression of type List[String] doesn't conform to expected type ToResponseMarshallable

我对Seq也有同样的错误。我看到列表和Seq的封送器默认不是在spray 文档中提供的。然而,喷雾-json在其DefaultJsonProtocol中提供了编组支持。我在代码中导入了spray.httpx.SprayJsonSupport._和spray.json.DefaultJsonProtocol._,但这也没有帮助。

你知不知道我怎么才能用喷雾-json整理一张名单/塞克?还是我要写我自己的元帅?

(我的scala版本是2.11.4)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-19 11:40:27

使用spray 1.3.2和spray-json 1.3.2应该是可能的。

确保您导入(虽然您说要导入,但是要进行双重检查)。

代码语言:javascript
复制
import spray.httpx.SprayJsonSupport._
import spray.json.DefaultJsonProtocol._

考虑以下例子:

代码语言:javascript
复制
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"))
    }
  }

}

请求/ping返回["OK"],看起来不错。

仅供参考build.sbt波纹管。

build.sbt

代码语言:javascript
复制
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"
)
票数 5
EN

Stack Overflow用户

发布于 2017-07-06 00:50:22

akka 2.3.5以来,用于编组的API似乎已经发生了变化。对于akka-2.4.11.2SprayJsonSupport需要import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._

1)下面是工作的sbt,

代码语言:javascript
复制
name := "some-project"

version := "1.0"

scalaVersion := "2.11.5"

scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")

val akkaVersion = "2.4.5"

libraryDependencies ++= {
  Seq(
    "com.typesafe.akka" %% "akka-http-experimental" % akkaVersion,
    "com.typesafe.akka" % "akka-http-spray-json-experimental_2.11" % akkaVersion,
    "com.typesafe.akka" %% "akka-slf4j" % akkaVersion,

    "org.mongodb" % "mongo-java-driver" % "3.4.1",
    "org.apache.kafka" %% "kafka" % "0.10.1.1",
    "org.apache.kafka" % "kafka-clients" % "0.10.1.1",

    //test
    "org.scalatest" %% "scalatest" % "2.2.5" % "test",
    "com.typesafe.akka" %% "akka-http-testkit" % "10.0.9" % "test",
    "de.flapdoodle.embed" % "de.flapdoodle.embed.mongo" % "2.0.0" % "test"
  )
}

parallelExecution in Test := false

2)和进口是,

代码语言:javascript
复制
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
import spray.json.DefaultJsonProtocol._

object GetMusicResources {

  val music_get_api =
    path("music") {
      get {
        complete {
          List("my data1")
        }
      }
    }
}

3)测试

代码语言:javascript
复制
  Get("/music") ~> GetMusicResources.music_get_api ~> check {
    val response1: Future[ByteString] = response.entity.toStrict(300.millis).map {_.data }

    response1.map(_.utf8String).map { responseString =>
      responseString shouldBe """["my data1"]"""
    }

  }
票数 1
EN

Stack Overflow用户

发布于 2020-03-29 11:18:35

在我的例子中,我错过了第二个导入:

代码语言:javascript
复制
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._
import spray.json.DefaultJsonProtocol._  // <= this one

万一有人碰到同样的问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28575073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档