@@ -15,10 +15,7 @@ import io.circe.{Decoder, DecodingFailure, Encoder, Json}
1515import io .circe .syntax ._
1616import org .openapitools .client .core .JsonSupport ._
1717
18- sealed trait Animal {
19- def className : String
20- def color : Option [String ]
21- }
18+ trait Animal
2219object Animal {
2320 implicit val encoderAnimal : Encoder [Animal ] = Encoder .instance {
2421 case obj : Cat => obj.asJson.mapObject((" className" -> " CAT" .asJson) +: _)
@@ -33,60 +30,3 @@ object Animal {
3330 }
3431}
3532
36- case class Cat (
37- className : String ,
38- color : Option [String ] = None ,
39- declawed : Option [Boolean ] = None
40- ) extends Animal
41- object Cat {
42- implicit val encoderCat : Encoder [Cat ] = Encoder .instance { t =>
43- Json .fromFields{
44- Seq (
45- Some (" className" -> t.className.asJson),
46- t.color.map(v => " color" -> v.asJson),
47- t.declawed.map(v => " declawed" -> v.asJson)
48- ).flatten
49- }
50- }
51- implicit val decoderCat : Decoder [Cat ] = Decoder .instance { c =>
52- for {
53- className <- c.downField(" className" ).as[String ]
54- color <- c.downField(" color" ).as[Option [String ]]
55- declawed <- c.downField(" declawed" ).as[Option [Boolean ]]
56- } yield Cat (
57- className = className,
58- color = color,
59- declawed = declawed
60- )
61- }
62- }
63-
64- case class Dog (
65- className : String ,
66- color : Option [String ] = None ,
67- breed : Option [String ] = None
68- ) extends Animal
69- object Dog {
70- implicit val encoderDog : Encoder [Dog ] = Encoder .instance { t =>
71- Json .fromFields{
72- Seq (
73- Some (" className" -> t.className.asJson),
74- t.color.map(v => " color" -> v.asJson),
75- t.breed.map(v => " breed" -> v.asJson)
76- ).flatten
77- }
78- }
79- implicit val decoderDog : Decoder [Dog ] = Decoder .instance { c =>
80- for {
81- className <- c.downField(" className" ).as[String ]
82- color <- c.downField(" color" ).as[Option [String ]]
83- breed <- c.downField(" breed" ).as[Option [String ]]
84- } yield Dog (
85- className = className,
86- color = color,
87- breed = breed
88- )
89- }
90- }
91-
92-
0 commit comments