Circe decoder-encoder for object as json parameter type

160 Views Asked by At

How to write such a string-encoder decoder for circe? For example, I have

case class Something (s: String, foo: Foo, bar: Bar)

where Bar is member of ADT

trait Bar
case object A extends Bar
case object B extends Bar

where I want to decode my Something like

{
"s":"smstring",
"foo":{...somefoo...},
"bar":"aaa"//for Bar=A, or "bbb" for Bar=B
}

What is the simplest way to organise decoder/encoder for Something?

PS May be using derived Something codec + some modification(contramap?)?

1

There are 1 best solutions below

0
On

look like I need eMapTry and contramap from String to decoders and encoders of both objects