json
Attributes
- Graph
-
- Supertypes
-
class Objecttrait Matchableclass Any
- Self type
-
json.type
Members list
Value members
Concrete methods
(__ \ 'key).json.copyFrom(reads) is a Reads[JsObject] that:
(__ \ 'key).json.copyFrom(reads) is a Reads[JsObject] that:
- copies a JsValue using passed
Reads[A] - creates a new branch from
JsPathand copies previous value into it
Useful to copy a value from a JSON branch into another branch.
Example:
import play.api.libs.json.{ Json, __ }
val js = Json.obj("key1" -> "value1", "key2" -> "value2")
js.validate( (__ \ 'key3).json.copyFrom((__ \ 'key2).json.pick))
// => JsSuccess({"key3":"value2"},/key2)
Attributes
(__ \ 'key).json.pick[A <: JsValue] is a Reads[A] that:
(__ \ 'key).json.pick[A <: JsValue] is a Reads[A] that:
- picks the given value at the given
JsPath(WITHOUT THE PATH) from the input JS - validates this element as an object of type A (inheriting JsValue)
- returns a
JsResult[A]
Useful to pick a typed JsValue at a given JsPath
Example:
import play.api.libs.json.{ Json, JsNumber, __ }
val js = Json.obj("key1" -> "value1", "key2" -> 123)
js.validate((__ \ 'key2).json.pick[JsNumber])
// => JsSuccess(JsNumber(123),/key2)
Attributes
(__ \ 'key).json.pick is a Reads[JsValue] that:
(__ \ 'key).json.pick is a Reads[JsValue] that:
- picks the given value at the given
JsPath(WITHOUT THE PATH) from the input JS - validates this element as an object of type JsValue
- returns a
JsResult[JsValue]
Useful to pick a JsValue at a given JsPath
Example:
import play.api.libs.json.{ Json, __ }
val js = Json.obj("key1" -> "value1", "key2" -> "value2")
js.validate((__ \ 'key2).json.pick)
// => JsSuccess("value2",/key2)
Attributes
(__ \ 'key).json.pickBranch[A <: JsValue](readsOfA) is a Reads[JsObject] that:
(__ \ 'key).json.pickBranch[A <: JsValue](readsOfA) is a Reads[JsObject] that:
- copies the given branch (
JsPath+ relative JsValue) from the input JS at this givenJsPath - validates this relative
JsValueas an object of type A (inheritingJsValue) potentially modifying it - creates a JsObject from
JsPathand validatedJsValue - returns a
JsResult[JsObject]
Useful to create/validate an JsObject from a single JsPath (potentially modifying it)
Example:
import play.api.libs.json.{ Json, JsString, __ }
val js = Json.obj("key1" -> "value1", "key2" -> Json.obj( "key21" -> "value2") )
js.validate( (__ \ 'key2).json.pickBranch[JsString]( (__ \ 'key21).json.pick[JsString].map( (js: JsString) => JsString(js.value ++ "3456") ) ) )
// => JsSuccess({"key2":"value23456"},/key2/key21)
Attributes
(__ \ 'key).json.pickBranch is a Reads[JsObject] that:
(__ \ 'key).json.pickBranch is a Reads[JsObject] that:
- copies the given branch (
JsPath+ relative JsValue) from the input JS at this givenJsPath - creates a
JsObjectfromJsPathandJsValue - returns a
JsResult[JsObject]
Useful to create/validate an JsObject from a single JsPath (potentially modifying it)
Example:
import play.api.libs.json.{ Json, __ }
val js = Json.obj("key1" -> "value1", "key2" -> Json.obj( "key21" -> "value2") )
js.validate( (__ \ 'key2).json.pickBranch )
// => JsSuccess({"key2":{"key21":"value2"}},/key2)
Attributes
(__ \ 'key).json.prune is Reads[JsObject] that prunes the branch and returns remaining JsValue.
(__ \ 'key).json.prune is Reads[JsObject] that prunes the branch and returns remaining JsValue.
Example:
import play.api.libs.json.{ Json, __ }
val js = Json.obj("key1" -> "value1", "key2" -> "value2")
js.validate( (__ \ 'key2).json.prune )
// => JsSuccess({"key1":"value1"},/key2)
Attributes
(__ \ 'key).put(fixedValue) is a Reads[JsObject] that:
(__ \ 'key).put(fixedValue) is a Reads[JsObject] that:
This Reads doesn't care about the input JS and is mainly used to set a fixed at a given JsPath Please that A is passed by name allowing to use an expression reevaluated at each time.
Example:
import play.api.libs.json.{ Json, JsNumber, __ }
val js = Json.obj("key1" -> "value1", "key2" -> "value2")
js.validate( (__ \ 'key3).json.put( { JsNumber((new java.util.Date).getTime()) } ) )
// => JsSuccess({"key3":1376419773171},)
Attributes
(__ \ 'key).json.update(reads) is the most complex Reads[JsObject] but the most powerful:
(__ \ 'key).json.update(reads) is the most complex Reads[JsObject] but the most powerful:
- copies the whole
JsValue => A - applies the passed
Reads[A]onJsValue => B - deep merges both
JsValues (A ++ B)soBoverwritesAidentical branches
Please note that if you have prune a branch in B, it is still in A so you'll see it in the result
Example:
import play.api.libs.json.{ Json, JsString, __ }
val js = Json.obj("key1" -> "value1", "key2" -> "value2")
js.validate(__.json.update((__ \ 'key3).json.put(JsString("value3"))))
// => JsSuccess({"key1":"value1","key2":"value2","key3":"value3"},)