Выделение собственного пользовательского класса с использованием Scala Spray httpx
Я пытаюсь маршаллизировать строку в пользовательский класс case, который у меня есть. Вот код, который я пытаюсь использовать
import spray.httpx.SprayJsonSupport._
import NflWeekJsonProtocol._
path("playerScore") {
get {
parameters('gsisId.as[String] ?, 'week.as[NflWeek] ?, 'playerId.as[String]).as(PlayerScoreRequest) {
playerScoreRequest : PlayerScoreRequest =>
}
}
}
и вот ошибка, которую я получаю:
[error] /home/chris/dev/suredbits-dfs/src/main/scala/com/suredbits/dfs/nfl/scoring/NflPlayerScoringService.scala:40: too many arguments for method parameters: (pdm: spray.routing.directives.ParamDefMagnet)pdm.Out
[error] parameters('gsisId.as[String] ?, 'week.as[NflWeek] ?, 'playerId.as[String]).as(PlayerScoreRequest) {
[error] ^
[error] one error found
NflWeekJsonProtocol
представляет способ сериализации класса дела NflWeek
, Я думал, что это все, что мне нужно сделать, чтобы заставить это работать, что мне не хватает?
РЕДАКТИРОВАТЬ:
object NflWeekJsonProtocol extends DefaultJsonProtocol {
implicit object NflWeekFormat extends RootJsonFormat[NflWeek] {
override def read(jsValue: JsValue) = {
jsValue match {
case JsString(string) => NflWeekFactory.factory(string)
case _ => throw new RuntimeException("NFLWeek should always be reprsented by a JsString")
}
}
override def write(week: NflWeek) = {
JsString(week.toString)
}
}
}
1 ответ
При использовании специального десериализатора вам нужно использовать символы скобок, а не квадратные скобки.as(NflWeek)