Сохраняйте JSON вывод согласованным, когда поле таблицы пустое в Slick Play - PullRequest
0 голосов
/ 26 января 2020

Я пытался не отмечать каждое поле в Scala как Option:

to_date: LocalDateTime

Но это дает Compilation Error:

 type mismatch;
 found   : None.type
 required: java.time.LocalDateTime

При использовании Option ошибка исчезла:

to_date: Option[LocalDateTime]

Но я столкнулся с другой проблемой: to_date поле удалено из JSON Ответ:

UserModel.find(UserId).map {
    case Some(x) => Ok(Json.toJson(x)(userWrites))
    case None => NotFound("user not found!")
} 

Как сохранить поле to_date в JSON ответ в Scala Play framework при использовании Slick?

1 Ответ

0 голосов
/ 27 января 2020

Вы можете использовать OptionHandlersJsonNaming) для пользовательского JsonConfiguration.

import play.api.libs.json._

import java.time.LocalDateTime

case class Foo(toDate: Option[LocalDateTime])

object Foo {
  implicit val writes: OWrites[Foo] = {
    implicit def config = JsonConfiguration(
      naming = JsonNaming.SnakeCase,
      optionHandlers = OptionHandlers.WritesNull)

    Json.writes[Foo]
  }
}

Json.toJson(Foo(Some(LocalDateTime.now())))
// {"to_date":"2020-01-27T10:08:55.742106"}

Json.toJson(Foo(None))
// {"to_date":null}
...