У меня есть класс API, вдохновленный демо-версией spray scala здесь Я пишу, что будет отображать человека как объект 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 есть какая-то особая поддержка, позволяющая не упорядочивать свойство, которое не следует добавлять в ответ сервера?