scala
import io.circe._
import io.circe.syntax._
import io.circe.parser._
case class Person(name: String, age: Int)
implicit val personEncoder: Encoder[Person] = (a: Person) => Json.obj(
("name", Json.fromString(a.name)),
("age", Json.fromInt(a.age))
)
implicit val personDecoder: Decoder[Person] = (c: HCursor) =>
for {
name <- c.downField("name").as[String]
age <- c.downField("age").as[Int]
} yield Person(name, age)
val person = Person("Alice", 30)
val jsonStr = person.asJson.noSpaces
val parsedPerson = decode[Person](jsonStr)