У меня есть следующий код, который я ожидаю напечатать тип кодируемого объекта, но он печатает только пустой объект:
import cats.syntax.functor._
import io.circe.generic.auto._
import io.circe.generic.extras.Configuration
import io.circe.syntax._
import io.circe.{Decoder, Encoder}
object Main extends App {
implicit val customConfig: Configuration =
Configuration.default.withDefaults.withDiscriminator("type")
sealed trait Foo
final case object Bar extends Foo
final case object Boo extends Foo
implicit val encodeEvent: Encoder[Foo] = Encoder.instance {
case Bar => Bar.asJson
case Boo => Boo.asJson
}
implicit val decodeEvent: Decoder[Foo] =
List[Decoder[Foo]](
Decoder[Bar.type].widen,
Decoder[Boo.type].widen,
).reduceLeft(_ or _)
val bar = Bar
println((bar: Foo).asJson.noSpaces) // {}
}
Почему Configuration
не применяется ккодировка моего Foo
?