object json
- Source
- JsPath.scala
- Alphabetic
- By Inheritance
- json
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Value Members
- def copyFrom[A <: JsValue](reads: Reads[A]): [JsObject]
( \ '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
( \ '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)
- def pick: [JsValue]
( \ '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]( \ '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)
- def pick[A <: JsValue](implicit r: Reads[A]): Reads[A]
( \ '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]( \ '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)
- def pickBranch: [JsObject]
( \ 'key).json.pickBranch
is a
Reads[JsObject]that: - copies the given branch (
JsPath+ relative JsValue) from the input JS at this given
JsPath- creates a
JsObjectfrom
JsPathand
JsValue- returns a
JsResult[JsObject]( \ 'key).json.pickBranch
is a
Reads[JsObject]that: - copies the given branch (
JsPath+ relative JsValue) from the input JS at this given
JsPath- creates a
JsObjectfrom
JsPathand
JsValue- 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)
- def pickBranch[A <: JsValue](reads: Reads[A]): [JsObject]
( \ 'key).json.pickBranch[A <: JsValue](readsOfA)
is a
Reads[JsObject]that: - copies the given branch (
JsPath+ relative JsValue) from the input JS at this given
JsPath- validates this relative
JsValueas an object of type A (inheriting
JsValue) potentially modifying it - creates a JsObject from
JsPathand validated
JsValue- returns a
JsResult[JsObject]( \ 'key).json.pickBranch[A <: JsValue](readsOfA)
is a
Reads[JsObject]that: - copies the given branch (
JsPath+ relative JsValue) from the input JS at this given
JsPath- validates this relative
JsValueas an object of type A (inheriting
JsValue) potentially modifying it - creates a JsObject from
JsPathand validated
JsValue- 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)
- def prune: [JsObject]
( \ '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)
- def put(a: => JsValue): [JsObject]
( \ 'key).put(fixedValue)
is a
Reads[JsObject]that: - creates a setting A (inheriting JsValue) at given
JsPath- returns a
JsResult[JsObject]( \ 'key).put(fixedValue)
is a
Reads[JsObject]that: - creates a setting A (inheriting JsValue) at given
JsPath- returns a
JsResult[JsObject]This
Reads
doesn't care about the input JS and is mainly used to set a fixed at a givenJsPath
Please thatA
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},)
- def update[A <: JsValue](reads: Reads[A]): [JsObject]
( \ 'key).json.update(reads)
is the most complex
Reads[JsObject]but the most powerful: - copies the whole
JsValue => A- applies the passed
Reads[A]on
JsValue => B- deep merges both
JsValues (A ++ B)so
Boverwrites
Aidentical branches
( \ 'key).json.update(reads)
is the most complex
Reads[JsObject]but the most powerful: - copies the whole
JsValue => A- applies the passed
Reads[A]on
JsValue => B- deep merges both
JsValues (A ++ B)so
Boverwrites
Aidentical branches
Please note that if you have prune a branch in
B
, it is still inA
so you'll see it in the resultExample:
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"},)