Да, но вам потребуются дополнительные функции circe-generic:
import io.circe.Decoder
import io.circe.generic.extras.Configuration
import io.circe.generic.extras.semiauto.deriveDecoder
case class Person(
id: Option[Int] = None,
name: String,
isActive: Boolean = true
)
object Person {
implicit val personConfig: Configuration =
Configuration.default.withDefaults
implicit val personJsonDecoder: Decoder[Person] = deriveDecoder
}
А затем:
scala> io.circe.jawn.decode[Person]("""{"name": "Geovanny Junio"}""")
res0: Either[io.circe.Error,Person] = Right(Person(None,Geovanny Junio,true))
Я собирался добавить эту функцию в производную Circe, но у меня не было времени, поэтому circe-generic-extras - это единственный способ заставить его работать на данный момент (если не считать написания собственного декодера).