我试图将自定义反序列化器添加到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)
})
}
如何应用自定义解串器LocalDateTime
的对象指定对象A
,以A
案例类?
使用半自动推导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]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句