scala libraryDependencies += "io.circe" %% "circe-generic" % "0.14.1" json { "name": "Alice", "age": 30 } scala import io.circe._ import io.circe.generic.auto._ case class Person(name: String, age: Int) scala val json = """{ "name": "Alice", "age": 30 }""" val person = decode[Person](json) scala import io.circe._ import io.circe.generic.auto._ case class Person(name: String, age: Int) scala val person = Person("Alice", 30) val json = encode(person) scala import io.circe.generic.semiauto._ implicit val personEncoder: Encoder[Person] = deriveEncoder[Person] implicit val personDecoder: Decoder[Person] = deriveDecoder[Person] scala import io.circe.syntax._ implicit val personEncoder: Encoder[Person] = Encoder.instance { person => Json.obj( "name" -> person.name.asJson, "age" -> person.age.asJson, "address" -> person.address.getOrElse("").asJson ) } implicit val personDecoder: Decoder[Person] = Decoder.instance { cursor => for { name <- cursor.downField("name").as[String] age <- cursor.downField("age").as[Int] address <- cursor.downField("address").as[Option[String]] } yield Person(name, age, address) } scala import io.circe.syntax._ import io.circe.{Encoder, Decoder, HCursor, Json} implicit val personEncoder: Encoder[Person] = new Encoder[Person] { final def apply(person: Person): Json = { Json.obj( "name" -> person.name.asJson, "age" -> person.age.asJson ) } } implicit val personDecoder: Decoder[Person] = new Decoder[Person] { final def apply(cursor: HCursor): Decoder.Result[Person] = { for { name <- cursor.downField("name").as[String] age <- cursor.downField("age").as[Int] } yield Person(name, age) } }


上一篇:
下一篇:
切换中文