Итак, у меня есть этот класс:
case class Something[T](data: Option[T] = None)
И я регистрирую это как инструкция, указанная в https://github.com/spray/spray-json и в https://doc.akka.io/docs/akka-http/current/common/json-support.html. Как это:
import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport
import spray.json.DefaultJsonProtocol
trait InternalJsonFormat extends SprayJsonSupport with DefaultJsonProtocol {
import spray.json._
implicit def somethingFormat[A :JsonFormat] = jsonFormat1(Something.apply[A])
}
И, наконец, я использовал complete
из директивы akka http. Как это:
import akka.http.scaladsl.server.Directives._
object ResponseIt extends InternalJsonFormat {
def apply[T](rawData: T) = {
val theResponse = Something(data = Some(rawData))
complete(theResponse)
}
}
А потом я получаю ошибку в complete(theResponse)
. Он сказал
Type mismatch, expected: ToResponseMarshallable, actual: Something[T]
=============================================== ============
Я пытаюсь отредактировать последний код для отладки, например:
object ResponseIt extends InternalJsonFormat {
import spray.json._
def apply[T](rawData: T) = {
val theResponse = Something(data = Some(rawData))
val trying = theResponse.toJson
complete(theResponse)
}
}
и получите новую ошибку в val trying = theResponse.toJson
. как это:
No implicits found for parameter writer: JsonWriter[Something[T]]
Итак, я действительно запутался, что не так в моем коде? Есть ли правильный способ использовать спрей json support в akka http?
Заранее спасибо