Reads

@implicitNotFound("No Json deserializer found for type ${A}. Try to implement an implicit Reads or Format for this type.") 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.

Companion
object
class Object
trait Matchable
class Any

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

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

Convert the JsValue into a A

Convert the JsValue into a A

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

Convert the JsValue into a A

Convert the JsValue into a A

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).

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).

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).

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 Params
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")
}
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 Params
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")
}
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 Params
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")
}
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 Params
B

The type of the value produced by the new Reads.

Value Params
f

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

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 Params
B

The type of the value produced by the new Reads.

Value Params
f

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

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 Params
B

The type of the value produced by the new Reads.

Value Params
f

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

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 Params
v

the Reads to run if this one gets a JsError

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 Params
v

the Reads to run if this one gets a JsError

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 Params
v

the Reads to run if this one gets a JsError

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 Params
transformer

the function to pre-process the input JSON

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 Params
transformer

the function to pre-process the input JSON

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 Params
transformer

the function to pre-process the input JSON

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]
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]
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]

Deprecated methods

@deprecated("Use [[composeWith]]", "2.7.0")
def compose[B <: JsValue](rb: Reads[B]): Reads[A]
Implicitly added by Tuple1R
Deprecated
@deprecated("Use [[composeWith]]", "2.7.0")
def compose[B <: JsValue](rb: Reads[B]): Reads[A]
Implicitly added by mapReads
Deprecated
@deprecated("Use [[composeWith]]", "2.7.0")
def compose[B <: JsValue](rb: Reads[B]): Reads[A]
Deprecated