У меня проблемы с построением спокойного сервиса с лифтом. Все, что я хочу сделать на этом этапе, это сериализовать MongoRecord в JSON. Вот моя модель:
class Team extends MongoRecord[Team] with MongoId[Team] {
def meta = Team
object name extends StringField(this, 100)
object slug extends StringField(this, 100)
}
object Team extends Team with MongoMetaRecord[Team] {
def all = Team orderAsc (_.slug) fetch()
def apply(in: JValue): Box[Team] = Helpers.tryo{in.extract[Team]}
def unapply(in: String): Option[Team] = Team where (_.slug eqs in) get()
implicit def toJson(team: Team): JValue =
Extraction.decompose(team)
implicit def toJson(teams: Seq[Team]): JValue =
Extraction.decompose(teams)
}
А вот моя реализация RestHelper:
object TeamRestService extends RestHelper {
serve( "api" / "teams" prefix {
case Nil JsonGet _ => Team.all: JValue
case Team(team) :: Nil JsonGet _ => team: JValue
})
}
Используя curl -i -H "Accept: application/json" <a href="http://localhost:8080/api/teams" rel="nofollow">http://localhost:8080/api/teams</a>
, я получаю [{}, {}]
, а с curl -i -H "Accept: application/json" <a href="http://localhost:8080/api/teams/team-1" rel="nofollow">http://localhost:8080/api/teams/team-1</a>
я получаю {}. Если я помещу оператор печати в TeamRestService
перед возвратом одной команды или списка команд, я ясно вижу, что все данные были установлены для экземпляров команды. По какой-то причине сериализация просто возвращает пустые объекты. Что мне нужно сделать для правильной сериализации экземпляров моей команды? Нужно ли создавать собственный формат или использовать какой-нибудь TypeHint? Если так, как бы я поступил так?