2017-07-25 103 views
0

是否有一個偉大的回報率?玩斯卡拉返回兩個對象

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. 

回答

1

你試圖寫一個2元組(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支持的更多信息。

+0

我必須在哪裏定義寫入? – Felix

+0

,爲什麼我需要爲每個模型設置寫入?它應該如何看起來像? – Felix

+0

解決了謝謝!!! – Felix