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