scala сохраняющая последовательность с параметрами

У меня есть

case class ProcessSteps(stepsData: Seq[ProcessStepTemplatesModel])

Эта последовательность может иметь пустую модель ProcessStepTemplatesModel.

Теперь, когда я хочу сохранить массив следующим образом:

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

Я получил ошибку из-за нулевых значений.

Есть ли способ удалить нулевые значения и сохранить только те, которые не являются нулевыми?

Я запускаю приложение scala Playframework с slick в качестве картографа базы данных.

Спасибо


person Felix    schedule 03.07.2017    source источник
comment
Как насчет использования Option[Seq[ProcessStepTemplatesModel]] вместо нуля? Или использовать Seq.empty[T] в качестве значения по умолчанию?   -  person Yuval Itzchakov    schedule 03.07.2017
comment
Option[Seq невозможен, я не хочу сохранять нулевые значения, я хочу их пропустить   -  person Felix    schedule 03.07.2017
comment
Как насчет processSteps.stepsData.filter( _ != null).foreach(...)?   -  person thwiegan    schedule 03.07.2017


Ответы (1)


Я предлагаю вам обернуть ProcessStepTemplatesModel в Option, чтобы указать, что может быть null значений: case class ProcessSteps(stepsData: Seq[Option[ProcessStepTemplatesModel]]), затем filter(_.isDefined) ваша последовательность будет иметь только существующие (не обнуляемые) шаги и безопасно выполнять остальную часть кода.

person solar    schedule 03.07.2017
comment
Привет, мы тоже попробовали это, но тут я получил ошибку implicit val ProcessStepsFormat: OFormat[ProcessSteps] = Json.format[ProcessSteps] - person Felix; 03.07.2017
comment
Ошибка: нет неявного формата для Seq[Option[models.ProcessStepTemplatesModel]]. - person Felix; 03.07.2017
comment
У меня есть ощущение, что неявный формат для работы с этим объектом должен быть переопределен и определен вами. Похоже, ребята в этой теме обсуждают соответствующую проблему, не так ли? - person solar; 03.07.2017
comment
В соответствии с пунктом 2.5 документа о параметрах чтения и на этот ответ который очень похож на ваш случай, я думаю - person solar; 03.07.2017