Je veux enregistrer une collection de classes FieldMapping en tant que chaîne 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]
}
... etc - code complet ici : https://github.com/alexeyOnGitHub/scala-typesafe/blob/master/src/main/scala/com/example/model/Field.scala
Code 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]
}
Erreur :(14, 65) impossible de trouver une valeur implicite paresseuse de type io.circe.generic.decoding.DerivedDecoder[com.example.model.FieldMapping] implicit val fooDecoder: Decoder[FieldMapping] = deriveDecoder[FieldMapping] Erreur :(14, 65)
pas assez d'arguments pour la méthode deriveDecoder : (implicite decode: shapeless.Lazy[io.circe.generic.decoding.DerivedDecoder[com.example.model.FieldMapping]])io.circe.Decoder[com.example.model.FieldMapping]. Paramètre de valeur non spécifié décode. implicit val fooDecoder: Decoder[FieldMapping] = deriveDecoder[FieldMapping] Erreur :(15, 65)
impossible de trouver une valeur implicite paresseuse de type io.circe.generic.encoding.DerivedObjectEncoder[com.example.model.FieldMapping] implicit val fooEncoder: Encoder[FieldMapping] = deriveEncoder[FieldMapping] Erreur :(15, 65)
pas assez d'arguments pour la méthode deriveEncoder: (implicite encode: shapeless.Lazy[io.circe.generic.encoding.DerivedObjectEncoder[com.example.model.FieldMapping]])io.circe.ObjectEncoder[com.example.model.FieldMapping]. Paramètre de valeur non spécifié encode. implicit val fooEncoder: Encoder[FieldMapping] = deriveEncoder[FieldMapping]