Объединение различных значений Json в один ответ с помощью Scala Play

У меня есть два разных объекта, которые я хочу вернуть в качестве Json. Я написал их неявные записи, и я хочу вернуть их в конкатенированный ответ.

Я продолжаю получать ошибку, Compilation error[No Json serializer found for type Seq[models.RedisInfo]. Try to implement an implicit Writes or Format for this typeнезависимо от того, что я делаю

Вот как мой код идет

def listAll() = Action.async { implicit request =>
  import models.Psql.{sqlUploadWrites => sqlWrites}
  import models.Redis.{redisWrites}

  val rFut:Future[Seq[RedisInfo]] = Redis.listAll()
  val sqlFut:Future[Seq[SQLInfo]] = SQL.listAll()
  val resp = Future.sequence(Seq(rFut, sqlFut)).map{

    /* Now I want to use their individual write methods to create the Json    
    and then wrap the result of the two into a Future[Result]

    case x: Seq[RedisInfo] => x.map(res => Json.toJson(res)(redisWrites))
    case y: Seq[SQLInfo] => y.map(res => Json.toJson(res)(sqlWrites))


  }

Последовательности не имеют одинаковой длины. Это также работает, когда я делаю это индивидуально. Поэтому мне интересно, какая дополнительная сложность существует в этом случае.

json,scala,playframework,

0

Ответов: 1


0

Поскольку вы не представили свою запись redisWrites, так что не можете комментировать это.

То, как я достигаю чего-то подобного, - это сначала реализовать методы чтения и записи формата, а затем создать для них неявное.

Object Formatter {
    def uuidFormat: Format[UUID] = new Format[UUID] {
    def writes(uuid: UUID): JsString = JsString(uuid.toString)
    def reads(value: JsValue): JsResult[UUID] = value match {
      case JsString(x) => UUID.fromString(x) match {
        case Success(uuid) => JsSuccess(uuid)
        case Failure(msg) => JsError(__  'UUID, ValidationError("invalid UUID", msg))
      }
      case _ => JsError(__  'UUID, ValidationError("invalid UUID", "Missing UUID String"))
    }
  }
  implicit val uuidFormat = uuidFormat
}

Затем импортируйте uuidFormat, и вам нужно выполнить json serde

import Formatter.uuidFormat
JSON, Скала, playframework,
Похожие вопросы