使用Http AKKA和案例类的JSON响应

bas*_*han 2 json scala case-class akka-http

我想使用Http AKKA构建一个包含多个路由的简单存根服务器.我有以下案例类:

  case class Person(name: String, age: Int)

  object Person {
    implicit def cardJsonFormat: RootJsonFormat[Person] = jsonFormat2(Person.apply)
  }
Run Code Online (Sandbox Code Playgroud)

如何将此案例类作为JSON响应返回.

我的路线看起来像:

  case class Person(name: String, age: Int)

  def route =
    get {
      path("person") {
        complete {

        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

Paw*_*nko 5

你应该尝试这样的事情:

import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport
import akka.http.scaladsl.server.Directives._
import spray.json.DefaultJsonProtocol

case class Person(name: String, age: Int)

case object Person extends SprayJsonSupport with DefaultJsonProtocol {
  implicit val personFormat = jsonFormat2(Person.apply)
}

object PersonRoute {
  val route =
    get {
      path("person") {
        complete {
          Person("Pawel", 25)
        }
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

更多细节和示例可以在文档中找到.