我试图为LocalDateTime对象的case类添加自定义反序列化器,但是它从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)
})
}如何将对象A中指定的A对象的自定义反序列化器应用于A case类?
发布于 2018-10-16 20:46:52
A使用半自动派生
import io.circe.generic.semiauto._
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)
})
implicit val AEncoder = deriveEncoder[A]
implicit val ADecoder = deriveDecoder[A]
}https://stackoverflow.com/questions/52843673
复制相似问题