Я хочу сохранить коллекцию классов FieldMapping в виде строки json -
abstract class Field {
def clazz: Class[_]
def name: String
}
case class StringField(name: String) extends Field {
override def clazz: Class[_] = classOf[String]
}
case class DateField(name: String) extends Field {
override def clazz: Class[_] = classOf[Date]
}
... и т. Д. - полный код здесь:
https://github.com/alexeyOnGitHub/scala-typesafe/blob/master/src/main/scala/com/example/model/Field.scala
Код Circe:
import com.example.model.{DateField, Field, FieldMapping, StringField}
import io.circe.generic.semiauto.{deriveDecoder, deriveEncoder}
import io.circe.{Decoder, Encoder}
object CirceBoilerplateForConfigs {
implicit val fieldDecoder: Decoder[StringField] = deriveDecoder[StringField]
implicit val fieldEncoder: Encoder[StringField] = deriveEncoder[StringField]
implicit val dateDecoder: Decoder[DateField] = deriveDecoder[DateField]
implicit val dateEncoder: Encoder[DateField] = deriveEncoder[DateField]
implicit val fooDecoder: Decoder[FieldMapping] = deriveDecoder[FieldMapping]
implicit val fooEncoder: Encoder[FieldMapping] = deriveEncoder[FieldMapping]
}
Ошибка: (14, 65) не удалось найти неявное значение типа Lazy
io.circe.generic.decoding.DerivedDecoder [com.example.model.FieldMapping]
неявный val fooDecoder: Decoder [FieldMapping] =
DeriveDecoder [FieldMapping] Ошибка: (14, 65)
Недостаточно аргументов для метода DerveDecoder: (неявное декодирование:
shapeless.Lazy [io.circe.generic.decoding.DerivedDecoder [com.example.model.FieldMapping]]) io.circe.Decoder [com.example.model.FieldMapping].
Не указано значение параметра декодирования. неявный val fooDecoder:
Декодер [FieldMapping] = производнаяDecoder [FieldMapping] Ошибка: (15, 65)
не удалось найти неявное значение типа Lazy
io.circe.generic.encoding.DerivedObjectEncoder [com.example.model.FieldMapping]
неявный val fooEncoder: Encoder [FieldMapping] =
DerveEncoder [FieldMapping] Ошибка: (15, 65)
недостаточно аргументов для
Метод DeriveEncoder: (неявное кодирование:
shapeless.Lazy [io.circe.generic.encoding.DerivedObjectEncoder [com.example.model.FieldMapping]]) io.circe.ObjectEncoder [com.example.model.FieldMapping].
Не указано значение параметра закодировать. неявный val fooEncoder:
Кодировщик [FieldMapping] = производноеEncoder [FieldMapping]