我有一个 API 类,灵感来自我正在编写的喷雾 scala 演示,它将在喷雾路线中将 Person 呈现为 JSON 对象。
trait UsersApi {
case class Person(name: String, firstName: String, age: Int)
object MyJsonProtocol extends DefaultJsonProtocol {
implicit val PersonFormat = jsonFormat3(Person)
}
import MyJsonProtocol._
import spray.httpx.SprayJsonSupport._
import spray.util._
val bob = Person("Bob", "Parr", 32)
val usersApiRouting: Route = {
path("users") {
get {
complete {
marshal(bob)
}
}
}
}
}
问题是 marshal(bob) 像这样返回 JSON:
{
"name": "Bob",
"firstName": "Parr",
"age": 32
}
想象一下,我需要像这样渲染没有“年龄”的 JSON:
{
"name": "Bob",
"firstName": "Parr"
}
这怎么可能实现?我的一个想法是 Scala 是否有办法制作一个对象,它是另一个对象的属性的子集?或者也许 spray-json 会对不编组不应添加到服务器响应中的属性提供一些特定的支持?