Skip to content
 
 

Latest commit

 

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages