[英]JSON response with Http AKKA and case classes
我想使用Http AKKA用几个路由构建一个简单的存根服务器。 我有以下案例类:
case class Person(name: String, age: Int)
object Person {
implicit def cardJsonFormat: RootJsonFormat[Person] = jsonFormat2(Person.apply)
}
如何返回此case类作为JSON响应。
我的路线如下:
case class Person(name: String, age: Int)
def route =
get {
path("person") {
complete {
}
}
}
您应该尝试这样的事情:
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中找到。
我发现以下与json4s一起使用的库akka-http-json很有用。 它可以帮助我减少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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.