那个
deriveDecoder
使用自动进近,您可以:
trait ExtendedAuto extends io.circe.generic.AutoDerivation {
implicit val myAdtDecoder: Decoder[MyAdt] = ...
}
package object json extends ExtendedAuto
您必须小心不要(意外地)导入同一个隐式两次,因为派生将失败。但是如果你遵守一个规则(例如,在任何地方都只一致地导入你的包对象),那么它应该是好的。
如果是半自动,那就不一样了:
package object json {
implicit val myAdtDecoder: Decoder[MyAdt] = ...
// signatures copy-pasted from io.circe.generic.semiauto
import io.circe.generic.semiauto
final def deriveDecoder[A](implicit decode: Lazy[DerivedDecoder[A]]): Decoder[A] = semiauto.deriveDecoder[A]
final def deriveEncoder[A](implicit encode: Lazy[DerivedObjectEncoder[A]]): ObjectEncoder[A] = semiauto.deriveEncoder[A]
}
@JsonCodec
.