【问题标题】:Returning a JSON array in Akka Http在 Akka Http 中返回一个 JSON 数组
【发布时间】:2018-08-27 14:18:21
【问题描述】:

我有一个 Akka HTTP 服务器,其路由定义如下:

case class FooResults(results: Seq[Tuple2[String, Tuple2[Double, Double]]])

object MainApp extends App with JsonSupport {

  ...

  lazy val routes: Route =
    pathPrefix("foo") {
      pathEnd {
        get {
          entity(as[String]) { str =>
          val results =
            (fooActor ? Foo(str)).mapTo[FooResults]
          complete(results)
      }
    }
  }
}
...

并且在类中我注入了隐式 json 支持:

trait JsonSupport extends SprayJsonSupport {
  import DefaultJsonProtocol._
  implicit val userFormat = jsonFormat1(FooResults)
}

不知何故 sbt 仍然报告

Type mismatch - FooResults with ToResponseMashallable

有人遇到过类似的问题吗?谢谢!

【问题讨论】:

  • 您是否尝试将FooResult.results 字段类型更改为Seq[(String, (Double, Double)]
  • 这不是一回事吗?它基本上是 Tuple2 的语法糖。

标签: scala akka akka-http


【解决方案1】:

我自己想通了。这是因为我的项目中有两个 SprayJsonSupport 类:

import spray.httpx.SprayJsonSupport
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport

现在显然后者是正确的。猜一猜,因为 Scala 和 Akka 都在发展(快速),有时它会与命名空间和类混淆。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-21
    • 2020-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-20
    • 2018-05-25
    相关资源
    最近更新 更多