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