Reads

play.api.libs.json.Reads
See theReads companion object
trait Reads[A]

A Reads object describes how to decode JSON into a value. Reads objects are typically provided as implicit values. When Reads implicit values are in scope, a program is able to deserialize JSON into values of the right type.

The inverse of a Reads object is a Writes object, which describes how to encode a value into JSON. If you combine a Reads and a Writes then you get a Format.

Attributes

Companion
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object ArrayNodeReads.type
object BigIntReads.type
object BigIntegerReads.type
object BooleanReads.type
object ByteReads.type
object DoubleReads.type
object FloatReads.type
object IntReads.type
object IsoDateReads.type
object JsArrayReads.type
object JsBooleanReads.type
object JsNumberReads.type
object JsObjectReads.type
object JsStringReads.type
object JsValueReads.type
object JsonNodeReads.type
object LongReads.type
object ObjectNodeReads.type
object ShortReads.type
object StringReads.type
class UUIDReader
trait Format[A]
trait OFormat[A]
Show all
Self type
Reads[A]

Members list

Value members

Abstract methods

def reads(json: JsValue): JsResult[A]
Implicitly added by Tuple1R

Convert the JsValue into a A

Convert the JsValue into a A

Attributes

def reads(json: JsValue): JsResult[A]
Implicitly added by mapReads

Convert the JsValue into a A

Convert the JsValue into a A

Attributes

def reads(json: JsValue): JsResult[A]

Convert the JsValue into a A

Convert the JsValue into a A

Attributes

Concrete methods

def andThen[B](rb: Reads[B])(implicit witness: A <:< JsValue): Reads[B]
Implicitly added by Tuple1R
def andThen[B](rb: Reads[B])(implicit witness: A <:< JsValue): Reads[B]
Implicitly added by mapReads
def andThen[B](rb: Reads[B])(implicit witness: A <:< JsValue): Reads[B]
def collect[B](error: JsonValidationError)(f: PartialFunction[A, B]): Reads[B]
Implicitly added by Tuple1R
def collect[B](error: JsonValidationError)(f: PartialFunction[A, B]): Reads[B]
Implicitly added by mapReads
def collect[B](error: JsonValidationError)(f: PartialFunction[A, B]): Reads[B]
def composeWith[B <: JsValue](rb: Reads[B]): Reads[A]
Implicitly added by Tuple1R

Creates a new Reads, which first passes the input JSON to rb, and then it executes this Reads on the pre-processed JSON (if rb has successfully handled the input JSON).

Creates a new Reads, which first passes the input JSON to rb, and then it executes this Reads on the pre-processed JSON (if rb has successfully handled the input JSON).

Attributes

def composeWith[B <: JsValue](rb: Reads[B]): Reads[A]
Implicitly added by mapReads

Creates a new Reads, which first passes the input JSON to rb, and then it executes this Reads on the pre-processed JSON (if rb has successfully handled the input JSON).

Creates a new Reads, which first passes the input JSON to rb, and then it executes this Reads on the pre-processed JSON (if rb has successfully handled the input JSON).

Attributes

def composeWith[B <: JsValue](rb: Reads[B]): Reads[A]

Creates a new Reads, which first passes the input JSON to rb, and then it executes this Reads on the pre-processed JSON (if rb has successfully handled the input JSON).

Creates a new Reads, which first passes the input JSON to rb, and then it executes this Reads on the pre-processed JSON (if rb has successfully handled the input JSON).

Attributes

def filter(f: A => Boolean): Reads[A]
Implicitly added by Tuple1R
def filter(error: JsonValidationError)(f: A => Boolean): Reads[A]
Implicitly added by Tuple1R
def filter(f: A => Boolean): Reads[A]
Implicitly added by mapReads
def filter(error: JsonValidationError)(f: A => Boolean): Reads[A]
Implicitly added by mapReads
def filter(f: A => Boolean): Reads[A]
def filter(error: JsonValidationError)(f: A => Boolean): Reads[A]
def filterNot(f: A => Boolean): Reads[A]
Implicitly added by Tuple1R
def filterNot(error: JsonValidationError)(f: A => Boolean): Reads[A]
Implicitly added by Tuple1R
def filterNot(f: A => Boolean): Reads[A]
Implicitly added by mapReads
def filterNot(error: JsonValidationError)(f: A => Boolean): Reads[A]
Implicitly added by mapReads
def filterNot(f: A => Boolean): Reads[A]
def filterNot(error: JsonValidationError)(f: A => Boolean): Reads[A]
def flatMap[B](f: A => Reads[B]): Reads[B]
Implicitly added by Tuple1R
def flatMap[B](f: A => Reads[B]): Reads[B]
Implicitly added by mapReads
def flatMap[B](f: A => Reads[B]): Reads[B]
def flatMapResult[B](f: A => JsResult[B]): Reads[B]
Implicitly added by Tuple1R

Creates a new Reads, which transforms the successful result from the current instance using the given function.

Creates a new Reads, which transforms the successful result from the current instance using the given function.

Value parameters

f

the function applied on the successful A value

final class Foo private(val code: String) extends AnyVal
val A = new Foo("A")
val B = new Foo("B")
import play.api.libs.json.Reads
val r: Reads[Foo] = implicitly[Reads[String]].flatMapResult {
 case "A" => JsSuccess(A)
 case "B" => JsSuccess(B)
 case _   => JsError("error.expected.foo")
}

Attributes

def flatMapResult[B](f: A => JsResult[B]): Reads[B]
Implicitly added by mapReads

Creates a new Reads, which transforms the successful result from the current instance using the given function.

Creates a new Reads, which transforms the successful result from the current instance using the given function.

Value parameters

f

the function applied on the successful A value

final class Foo private(val code: String) extends AnyVal
val A = new Foo("A")
val B = new Foo("B")
import play.api.libs.json.Reads
val r: Reads[Foo] = implicitly[Reads[String]].flatMapResult {
 case "A" => JsSuccess(A)
 case "B" => JsSuccess(B)
 case _   => JsError("error.expected.foo")
}

Attributes

def flatMapResult[B](f: A => JsResult[B]): Reads[B]

Creates a new Reads, which transforms the successful result from the current instance using the given function.

Creates a new Reads, which transforms the successful result from the current instance using the given function.

Value parameters

f

the function applied on the successful A value

final class Foo private(val code: String) extends AnyVal
val A = new Foo("A")
val B = new Foo("B")
import play.api.libs.json.Reads
val r: Reads[Foo] = implicitly[Reads[String]].flatMapResult {
 case "A" => JsSuccess(A)
 case "B" => JsSuccess(B)
 case _   => JsError("error.expected.foo")
}

Attributes

def map[B](f: A => B): Reads[B]
Implicitly added by Tuple1R

Create a new Reads which maps the value produced by this Reads.

Create a new Reads which maps the value produced by this Reads.

Type parameters

B

The type of the value produced by the new Reads.

Value parameters

f

the function applied on the result of the current instance, if successful

Attributes

def map[B](f: A => B): Reads[B]
Implicitly added by mapReads

Create a new Reads which maps the value produced by this Reads.

Create a new Reads which maps the value produced by this Reads.

Type parameters

B

The type of the value produced by the new Reads.

Value parameters

f

the function applied on the result of the current instance, if successful

Attributes

def map[B](f: A => B): Reads[B]

Create a new Reads which maps the value produced by this Reads.

Create a new Reads which maps the value produced by this Reads.

Type parameters

B

The type of the value produced by the new Reads.

Value parameters

f

the function applied on the result of the current instance, if successful

Attributes

def orElse(v: Reads[A]): Reads[A]
Implicitly added by Tuple1R

Creates a new Reads, based on this one, which first executes this Reads' logic then, if this Reads resulted in a JsError, runs the second Reads on the JsValue.

Creates a new Reads, based on this one, which first executes this Reads' logic then, if this Reads resulted in a JsError, runs the second Reads on the JsValue.

Value parameters

v

the Reads to run if this one gets a JsError

Attributes

Returns

A new Reads with the updated behavior.

def orElse(v: Reads[A]): Reads[A]
Implicitly added by mapReads

Creates a new Reads, based on this one, which first executes this Reads' logic then, if this Reads resulted in a JsError, runs the second Reads on the JsValue.

Creates a new Reads, based on this one, which first executes this Reads' logic then, if this Reads resulted in a JsError, runs the second Reads on the JsValue.

Value parameters

v

the Reads to run if this one gets a JsError

Attributes

Returns

A new Reads with the updated behavior.

def orElse(v: Reads[A]): Reads[A]

Creates a new Reads, based on this one, which first executes this Reads' logic then, if this Reads resulted in a JsError, runs the second Reads on the JsValue.

Creates a new Reads, based on this one, which first executes this Reads' logic then, if this Reads resulted in a JsError, runs the second Reads on the JsValue.

Value parameters

v

the Reads to run if this one gets a JsError

Attributes

Returns

A new Reads with the updated behavior.

def preprocess(f: PartialFunction[JsValue, JsValue]): Reads[A]
Implicitly added by Tuple1R

Creates a new Reads, which first transforms the input JSON using the given tranformer, and then it executes this Reads on the pre-processed JSON.

Creates a new Reads, which first transforms the input JSON using the given tranformer, and then it executes this Reads on the pre-processed JSON.

Value parameters

transformer

the function to pre-process the input JSON

Attributes

def preprocess(f: PartialFunction[JsValue, JsValue]): Reads[A]
Implicitly added by mapReads

Creates a new Reads, which first transforms the input JSON using the given tranformer, and then it executes this Reads on the pre-processed JSON.

Creates a new Reads, which first transforms the input JSON using the given tranformer, and then it executes this Reads on the pre-processed JSON.

Value parameters

transformer

the function to pre-process the input JSON

Attributes

def preprocess(f: PartialFunction[JsValue, JsValue]): Reads[A]

Creates a new Reads, which first transforms the input JSON using the given tranformer, and then it executes this Reads on the pre-processed JSON.

Creates a new Reads, which first transforms the input JSON using the given tranformer, and then it executes this Reads on the pre-processed JSON.

Value parameters

transformer

the function to pre-process the input JSON

Attributes

def widen[B >: A]: Reads[B]
Implicitly added by Tuple1R

Widen this Reads.

Widen this Reads.

import play.api.libs.json.Reads

sealed trait Animal
case class Dog(name: String) extends Animal
case class Cat(name: String) extends Animal

def simple(r: Reads[Dog]): Reads[Animal] = r.widen[Animal]

Attributes

def widen[B >: A]: Reads[B]
Implicitly added by mapReads

Widen this Reads.

Widen this Reads.

import play.api.libs.json.Reads

sealed trait Animal
case class Dog(name: String) extends Animal
case class Cat(name: String) extends Animal

def simple(r: Reads[Dog]): Reads[Animal] = r.widen[Animal]

Attributes

def widen[B >: A]: Reads[B]

Widen this Reads.

Widen this Reads.

import play.api.libs.json.Reads

sealed trait Animal
case class Dog(name: String) extends Animal
case class Cat(name: String) extends Animal

def simple(r: Reads[Dog]): Reads[Animal] = r.widen[Animal]

Attributes

Deprecated methods

def compose[B <: JsValue](rb: Reads[B]): Reads[A]
Implicitly added by Tuple1R

Attributes

Deprecated
true
def compose[B <: JsValue](rb: Reads[B]): Reads[A]
Implicitly added by mapReads

Attributes

Deprecated
true
def compose[B <: JsValue](rb: Reads[B]): Reads[A]

Attributes

Deprecated
true