2017-07-03 21 views
0

階持續存在的序列

case class ProcessSteps(stepsData: Seq[ProcessStepTemplatesModel]) 

這Seqence可能會對空ProcessStepTemplatesModel

現在,當我想要堅持的數組是這樣的:

request.body.asJson.foreach(f = _.validate[ProcessSteps] match { 
     case JsSuccess(processSteps, _) => 
     // PROBLEM HIER 
     processSteps.stepsData.foreach(processStep => processTemplateDTO.addProcessStepTemplateToProcessTemplate(processStep, processId).map { 

我得到了一個錯誤由於空值。

有沒有辦法來scip空值,只持有那些不是空的?

進出口運行Scala的Playframework的應用程序,包括漂亮的數據庫映射

感謝

+1

如何使用Option [Seq [ProcessStepTemplatesModel]]而不是null?或者使用'Seq.empty [T]'作爲默認值? –

+0

選項[Seq不可能我不想保留空值,我想跳過它們 – Felix

+0

processSteps.stepsData.filter(_!= null).foreach(...)怎麼樣? – thwiegan

回答

2

我建議你在Option包裹ProcessStepTemplatesModel,表示可能有null值: case class ProcessSteps(stepsData: Seq[Option[ProcessStepTemplatesModel]]), 然後filter(_.isDefined)您的序列有隻有現有(不可爲空)的步驟並安全地執行其餘代碼。

+0

嗨,我們嘗試了這一點,但後來我在這裏得到一個錯誤'隱式val ProcessStepsFormat:OFormat [ProcessSteps] = Json.format [ProcessSteps]' – Felix

+0

錯誤是:沒有隱式格式Seq [Option [models.ProcessStepTemplatesModel]] 。 – Felix

+0

我有一種感覺,用這個對象操作的隱式格式應該被自己覆蓋和定義。看起來像[這個線程](https://github.com/playframework/playframework/issues/5196)中的guyz討論相關問題,不是嗎? – solar