play scala return 两个对象

play scala return two object

有没有办法 return 两种收益?

val process =
  for {
    processTemplate <- processTemplateDTO.getProcessTemplate(processTemplateId)
    processSteps <- processTemplateDTO.getProcessStepTemplates(processTemplateId)
  } yield (processTemplate, processSteps)


process.map(p => Ok(Json.toJson(p)))

我收到这个错误:

No Json serializer found for type (Option[models.ProcessTemplatesModel], Seq[models.ProcessStepTemplatesModel]). Try to implement an implicit Writes or Format for this type.

您正在尝试将二元组 (x,y) 写入 json。默认情况下,没有可用于元组的写入,即播放框架不知道如何将其转换为 json.

您可以通过提供写入来解决此问题,例如

implicit val writes =  new Writes[(A, B)] {
     override def writes(o: (A, B)): JsValue =
      Json.obj("field1"-> Json.toJson(o._1), "filed2" -> Json.toJson(o._2))
}

您还需要为 ProcessTemplatesModelProcessStepTemplatesModel 提供写入实现。您可以在 here.

上阅读有关 Play 框架中 json 支持的更多信息