@ConfiguredJsonCodec не работает с дополнительным конструктором

#scala #configuration #circe

#scala #конфигурация #circe

Вопрос:

 import io.circe.generic.extras.{Configuration, ConfiguredJsonCodec}
@ConfiguredJsonCodec case class Foo(firstName: String)
object Foo {
implicit val snakeConfiguration=Configuration.default.withSnakeCaseMemberNames}
  

после синтаксического анализа

 {"first_name":"Bob"}
  

мы получаем

 Foo("Bob")
  

Если мы добавим в Foo дополнительный пустой конструктор

 @ConfiguredJsonCodec case class Foo(firstName: String) {
def this() = this("")
}
object Foo {implicit val
 snakeConfiguration=Configuration.default.withSnakeCaseMemberNames}
  

мы получим

 could not find Lazy implicit value of type io.circe.generic.extras.decoding.ConfiguredDecoder[Foo]
  

Пожалуйста, помогите мне исправить эту ошибку

Комментарии:

1. Похоже, что это может быть ошибка (в circe или Shapeless я пока не могу сказать). Есть ли причина, по которой вы не хотите использовать аргумент по умолчанию для firstName вместо перегрузки конструктора?

2. Спасибо за ваше мнение. Я не хочу использовать аргумент по умолчанию для FirstName, потому что эти классы используются для jaxb, а jaxb в некоторых случаях не нуждается в конструкторе arg

3. Для протокола, это бесформенная ошибка, но мы могли бы в конечном итоге обойти ее в circe: github.com/circe/circe/issues/1129#issuecomment-494358743