Package

com.rojoma.json.v3

jpath

Permalink

package jpath

Visibility
  1. Public
  2. All

Type Members

  1. class JPath extends AnyRef

    Permalink

    A high-level interface for walking down a tree defined by a com.rojoma.json.v3.ast.JValue, returning a set of sub-values that match a path defined by a series of steps.

    A high-level interface for walking down a tree defined by a com.rojoma.json.v3.ast.JValue, returning a set of sub-values that match a path defined by a series of steps.

    Example:
    1. val v = JsonReader.fromString("""
        {
           "array": [1,2,3],
           "object": {
             "France" : [ "Paris", "Lyon", "Bordeaux" ],
             "Germany" : [ "Berlin", "Munich", "Leipzig" ],
             "Italy" : [ "Rome", "Florence", "Milan" ]
           }
        }
      """)
      def contains(z: JsonZipper, s: String) =
        z.asArray.map(_.value.toSeq.contains(JString(s))).getOrElse(false)
      JPath(v).down("array").finish
         // --> Stream(JArray(JNumber(1), JNumber(2), JNumber(3)))
      JPath(v).down("object").*.downFirst.finish
         // --> Stream(JString("Paris"), JString("Berlin"), JString("Rome"))
      JPath(v).*.down("France").downFirst.finish
         // --> Stream(JString("Paris"))
      JPath(v).**.downFirst.finish
        // --> Stream(JNumber(1), JString("Paris"), JString("Berlin"), JString("Rome"))
      JPath(v).*.having(_.*.where(contains(_, "Lyon"))).finish
        // --> Stream(JObject("France" -> ..., "Germany" -> ..., "Italy" -> ...))
      JPath(v).*.*.where(contains(_, "Lyon")).finish
        // --> Stream(JArray(JString("Paris"), JString("Lyon"), JString("Bordeaux")))

Value Members

  1. object JPath extends (JValue) ⇒ JPath

    Permalink

Ungrouped