Mappings

uk.gov.hmrc.play.json.Mappings
object Mappings

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

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

Members list

Value members

Concrete methods

def map[A, B](toDomain: A => B, fromDomain: B => A): Mapping[A, B]
def mapEither[A, B](toDomain: A => Either[String, B], fromDomain: B => A): Mapping[A, B]
def mapEnum[B : ClassTag](elements: B*): EnumMapping[B]
def mapOption[A, B : ClassTag](toDomain: A => Option[B], fromDomain: B => A): Mapping[A, B]
def mapTry[A, B](toDomain: A => Try[B], fromDomain: B => A): Mapping[A, B]