我想使用Http AKKA构建一个包含多个路由的简单存根服务器。 我有以下案例类:
nodemon server --harmony
如何将此案例类作为JSON响应返回。
我的路线如下:
case class Person(name: String, age: Int)
object Person {
implicit def cardJsonFormat: RootJsonFormat[Person] = jsonFormat2(Person.apply)
}
答案 0 :(得分: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)
}
}
}
}
更多详细信息和示例可在docs。
中找到答案 1 :(得分:1)
我发现以下与akka-http-json一起使用的库json4s很有用。它可以帮助我减少jsonFormatX
语句的数量。每个需要编组/解组的数据类型都需要每个jsonFormatX
语句。
只需混合以下需要发生马歇尔/解组的特征:
import de.heikoseeberger.akkahttpjson4s.Json4sSupport
import org.json4s.jackson
trait JsonCodec extends Json4sSupport {
import org.json4s.DefaultFormats
import org.json4s.ext.JodaTimeSerializers
implicit val serialization = jackson.Serialization
implicit val formats = DefaultFormats ++ JodaTimeSerializers.all
}