uk.gov.hmrc.play.json

Members list

Type members

Classlikes

class Enum[B](enumName: String, val elements: Seq[B])

Attributes

Supertypes
class Object
trait Matchable
class Any
class EnumMapping[B](val enum: Enum[B]) extends Mapping[String, B]

Attributes

Supertypes
class Mapping[String, B]
class Object
trait Matchable
class Any
class Mapping[A, B](toDomain: A => Either[String, B], fromDomain: B => A)

Attributes

Supertypes
class Object
trait Matchable
class Any
Known subtypes
class EnumMapping[B]
object Mappings

Usage examples:

Usage examples:

Constructor that never fails:

case class Foo(value: String)

object Foo extends (String => Foo) {

 private val mapping = Mappings.map[String, Foo](Foo, _.value)

 implicit val jsonFormat = mapping.jsonReads

 implicit val pathBindable = mapping.pathBindable

 implicit val queryStringBindable = mapping.queryStringBindable

}

Constructor that may fail:

case class Bar(value: String) {
 require(value.nonEmpty)
}

object Bar {

 private val mapping = Mappings.mapTry[String, Foo](s => Try(Foo(s)), _.value)

 implicit val jsonFormat = mapping.jsonReads

 implicit val pathBindable = mapping.pathBindable

 implicit val queryStringBindable = mapping.queryStringBindable

}

Enumeration:

sealed trait Base
case object Thing1 extends Base
case object Thing2 extends Base

object Base {

 private val mapping = Mappings.mapEnum(Thing1, Thing2)

 def fromString(name: String): Option[Base] = mapping.fromString(name)

 implicit val jsonFormat = mapping.jsonReads

 implicit val pathBindable = mapping.pathBindable

 implicit val queryStringBindable = mapping.queryStringBindable

}

Attributes

Supertypes
class Object
trait Matchable
class Any
Self type
Mappings.type