object json

Source
JsPath.scala
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. json
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Value Members

  1. 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 JsPath and 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 JsPath and 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)
  2. 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)
  3. 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)
  4. 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 JsObject from JsPath and 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 JsObject from JsPath and 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)
  5. 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 JsValue as an object of type A (inheriting JsValue) potentially modifying it - creates a JsObject from JsPath and 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 JsValue as an object of type A (inheriting JsValue) potentially modifying it - creates a JsObject from JsPath and 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)
  6. 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)
  7. 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 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},)
  8. 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 B overwrites A identical 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 B overwrites A identical 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"},)