Skip to content

tbinna/play-circe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

103 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Circe support for playframework

Build Status Codacy Badge codecov.io

How to get it

  • Add repository

resolvers += "Bintary JCenter" at "http://jcenter.bintray.com"

  • Add dependency

For play 2.6.x

libraryDependencies += "play-circe" %% "play-circe" % "2608.3"

Usage

package play.api.libs.circe

import io.circe.generic.auto._
import io.circe.syntax._
import play.api._
import play.api.mvc._

class CirceController(val controllerComponents: ControllerComponents) extends BaseController with Circe {

  case class Bar(bar: Int)
  case class Foo(foo: String, bar: Bar)

  val bar = Bar(1)
  val foo = Foo("foo", bar)

  //serve json
  def get = Action {
    Ok(foo.asJson)
  }

  //parse json to case class
  def post = Action(circe.json[Foo]) { implicit request =>
    val isEqual = request.body == foo
    Ok(isEqual.toString)
  }

  def postJson = Action(circe.json) { implicit request =>
    val isEqual = request.body == foo.asJson
    Ok(isEqual.toString)
  }

  def postTolerate = Action(circe.tolerantJson[Foo]) { implicit request =>
    val isEqual = request.body == foo
    Ok(isEqual.toString)
  }

  def postTolerateJson = Action(circe.tolerantJson) { implicit request =>
    val isEqual = request.body == foo.asJson
    Ok(isEqual.toString)
  }
}

If you want to customize the json output, you can provide an implicit Printer in scope (default is Printer.noSpaces):

import io.circe.Printer

implicit val customPrinter = Printer.spaces2.copy(dropNullKeys = true)

About

circe for play

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Scala 100.0%