This information is from the website: http://goessner.net/articles/JsonPath/ and is placed here for convenience. For the GetJSONToken functions, the token string is a JSON path expression.


JSONPath expressions always refer to a JSON structure in the same way as XPath expression are used in combination with an XML document. Since a JSON structure is usually anonymous and doesn't necessarily have a "root member object" JSONPath assumes the abstract name $ assigned to the outer level object.


JSONPath expressions can use the dot–notation:    $.store.book[0].title

or the bracket–notation:  $['store']['book'][0]['title']


JSONPath allows the wildcard symbol * for member names and array indices. It borrows the descendant operator '..'  Expressions of the underlying scripting language (<expr>) can be used as an alternative to explicit names or indices as in  $.store.book[(@.length-1)].title

using the symbol '@' for the current object. Filter expressions are supported via the syntax ?(<boolean expr>) as in $.store.book[?(@.price < 10)].title



JSONPath 

Description 

$

the root object/element

@

the current object/element

. or []

child operator

n/a

parent operator

..

recursive descent. JSONPath borrows this syntax from E4X.

*

wildcard. All objects/elements regardless their names.

n/a

attribute access. JSON structures don't have attributes.

[]

subscript operator. XPath uses it to iterate over element collections and for predicates. In Javascript and JSON it is the native array operator.

[,]

Union operator in XPath results in a combination of node sets. JSONPath allows alternate names or array indices as a set.

[start:end:step]

array slice operator borrowed from ES4.

?()

applies a filter (script) expression.

()

script expression, using the underlying script engine.





JSONPath examples

Let's practice JSONPath expressions by some more examples. We start with a simple JSON structure built after an XML example representing a bookstore.


{ "store": {

    "book": [

      { "category": "reference",

        "author": "Nigel Rees",

        "title": "Sayings of the Century",

        "price": 8.95

      },

      { "category": "fiction",

        "author": "Evelyn Waugh",

        "title": "Sword of Honour",

        "price": 12.99

      },

      { "category": "fiction",

        "author": "Herman Melville",

        "title": "Moby Dick",

        "isbn": "0-553-21311-3",

        "price": 8.99

      },

      { "category": "fiction",

        "author": "J. R. R. Tolkien",

        "title": "The Lord of the Rings",

        "isbn": "0-395-19395-8",

        "price": 22.99

      }

    ],

    "bicycle": {

      "color": "red",

      "price": 19.95

    }

  }

}



JSONPath 

Result 

$.store.book[*].author 

the authors of all books in the store

$..author 

all authors

$.store.* 

all things in store, which are some books and a red bicycle.

$.store..price 

the price of everything in the store.

$..book[2] 

the third book

$..book[(@.length-1)]
$..book[-1:] 

the last book in order.

$..book[0,1]
$..book[:2] 

the first two books

$..book[?(@.isbn)] 

filter all books with isbn number

$..book[?(@.price<10)] 

filter all books cheapier than 10

$..* 

all Elements in XML document. All members of JSON structure.



Created with the Personal Edition of HelpNDoc: Easy EPub and documentation editor