Skip to content

Instantly share code, notes, and snippets.

@atamborrino
Last active November 2, 2016 17:52
Show Gist options
  • Save atamborrino/2c397ac9df5ebefe71d168530d03e37d to your computer and use it in GitHub Desktop.
Save atamborrino/2c397ac9df5ebefe71d168530d03e37d to your computer and use it in GitHub Desktop.
Play Json vs Circe simple validation with error accumulation and no auto-derivation
case class Data(s: String, i: Int)
object Circe {
import io.circe._
import cats.implicits._
implicit val decoder: AccumulatingDecoder[Data] = (
Decoder[String].prepare(_.downField("s")) |@|
Decoder[Int].prepare(_.downField("i"))
).map(Data.apply)
.accumulating
}
object PlayJson {
import play.api.libs.json._
import play.api.libs.functional.syntax._
implicit val reads: Reads[Data] = (
(__ \ "s").read[String] ~
(__ \ "i").read[Int]
)(Data.apply _)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment