Я пытался добавить настраиваемый десериализатор в класс дел для объекта LocalDateTime
, однако он выбирает десериализатор по умолчанию из модуля circe-java8
.Если вы удалите этот модуль, код не будет скомпилирован (не может найти десериализатор для LocalDateTime
)
sbt
"io.circe" %% "circe-core" % circeVersion,
"io.circe" %% "circe-generic" % circeVersion,
"io.circe" %% "circe-parser" % circeVersion,
"io.circe" %% "circe-optics" % circeVersion,
"io.circe" %% "circe-java8" % circeVersion,
и исходного кода с пользовательским LocalDateTime
сериализатором / десериализатором
case class A(
date: LocalDateTime,
)
object A {
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
implicit val dateEncoder = Encoder.encodeString.contramap[LocalDateTime](_.format(formatter))
implicit val dateDecoder = Decoder.decodeString.emap[LocalDateTime](str => {
Either.catchNonFatal(LocalDateTime.parse(str, formatter)).leftMap(_.getMessage)
})
}
Как применить пользовательский десериализатор для LocalDateTime
объекта, указанного в объекте A
, к A
классу дела?