JSONPath is a similar to XPath alternative for JSON.
The result can be a single value or a list of multiple values.
There are two notations, dot-notation: $.book[1].title and bracket-notation: $['book'][1]['title'] (indexing starts from 0 , negative indices are relative to the last element).
Example input: {"book": [ {"year": 1999, "title": "Timeline", "author": "Michael Crichton"}, {"year": 2000, "title": "Plain Truth", "author": "Jodi Picoult"} ]}
Example results: $.book[0] - {"year": 1999, "title": "Timeline", "author": "Michael Crichton"} (JSON or String single value)
$.book[*].year - [1999,2000] (JSON or Int or Real list)
$.book[2].year - ? (no such part)
$..author - Timeline (String) or "Timeline" (JSON)
The default path ( $..* ) will select all possible subparts (excluding the whole JSON value).
When you request the paths instead of values for the $.book[0].* JSONPath, you will get the paths -in bracket notation- as a list of Strings:
- $['book'][0]['year']
- $['book'][0]['title']
- $['book'][0]['author']
The filters ?(expr) can be used to select contents with specific properties, for example $..book[?(@.publisher)] selects the books that specify their publisher ( @ refers to the actual element).