VH
Size: a a a
VH
VS
sealed trait OrderEvent
object OrderEvent {
case class Created(data: OrderCreated) extends OrderEvent
case class Changed(data: OrderChanged) extends OrderEvent
case class Canceled(data: OrderCanceled) extends OrderEvent
}
implicit val encoderOrderEvent: Encoder[OrderEvent] = deriveConfiguredEncoder
implicit val decoderOrderEvent: Decoder[OrderEvent] = deriveConfiguredDecoder
implicit val encoderOrderEventCreated: Encoder[OrderEvent.Created] = deriveUnwrappedEncoder
implicit val decoderOrderEventCreated: Decoder[OrderEvent.Created] = deriveUnwrappedDecoder
implicit val encoderOrderEventChanged: Encoder[OrderEvent.Changed] = deriveUnwrappedEncoder
implicit val decoderOrderEventChanged: Decoder[OrderEvent.Changed] = deriveUnwrappedDecoder
implicit val encoderOrderEventCanceled: Encoder[OrderEvent.Canceled] = deriveUnwrappedEncoder
implicit val decoderOrderEventCanceled: Decoder[OrderEvent.Canceled] = deriveUnwrappedDecoder
{"Changed":{ ... < OrderChanged fields here >....}}
{"Created":{ ... < OrderCreated fields here >....}}
Configuration.default.withSnakeCaseMemberNames.withSnakeCaseConstructorNames.withDefaults
withSnakeCaseConstructorNames - как раз управляет как имя конструктора будет выглядеть в JSON.@SomeMagic("IdontCareAboutNameOfCasesClassChanged")
case class Changed(data: OrderChanged) extends OrderEvent
{"IdontCareAboutNameOfCasesClassChanged":{ ... < OrderChanged fields here >....}}ΛВ
ΛВ
ΛВ
ΛВ
ΛВ
TT
ΛВ
snakeCaseTransformation : String => StringΛВ
def WithNoCareOfNamesOrSomethingLikeConst: Configuration => Configuration = _.copy(
transformConstructorNames = _ => «IdontCareAboutNameOfCasesClassChanged»
)ΛВ
import derevo.derive
import derevo.circe.magnolia._
import io.circe.magnolia.configured.Configuration
@derive(customizableDecoder, customizableEncoder)
final case class Content(sections: Vector[Section])
object Content {
implicit val conf: Configuration =
WithNoCareOfNamesOrSomethingLikeConst(Configuration.default)}VS
@JsonKey("Whatever"), проблема именно про конструкторы.ΛВ
VS
VS
ΛВ
ΛВ
VS
TT
ZM