JSONPath
Last updated
Last updated
JSONPath is a tool for quickly filtering from JSON data.
Operator
Description
$
The root element to query. This starts all path expressions.
@
The current node is being processed by a filter predicate.
*
Wildcard. Available anywhere a name or numeric are required.
..
Deep scan. Available anywhere a name is required.
.<name>
Dot-notated child
['<name>' (, '<name>')]
Bracket-notated child or children
[<number> (, <number>)]
Array index or indexes
[start:end]
Array slice operator
[?(<expression>)]
Filter expression. The expression must evaluate to a boolean value.
Filters are logical expressions used to filter arrays. A typical filter would be [?(@.age > 18)]
where @
represents the current item being processed.
Operator
Description
==
left is equal to the right (note that 1 is not equal to '1')
!=
left is not equal to the right
<
left is less than right
<=
left is less or equal to the right
>
left is greater than right
>=
left is greater than or equal to the right
=~
left matches regular expression [?(@.name =~ /foo.*?/i)]
in
left exists in right [?(@.size in ['S', 'M'])]
nin
left does not exists in right
subsetof
left is a subset of right [?(@.sizes subsetof ['S', 'M', 'L'])]
anyof
left has an intersection with right [?(@.sizes anyof ['M', 'L'])]
noneof
left has no intersection with right [?(@.sizes noneof ['M', 'L'])]
size
size of left (array or string) should match right
empty
left (array or string) should be empty
Given the JSON Data.
JsonPath
Result
$.store.book[*].author
The authors of all books
$..author
All authors
$.store.*
All things, both books and bicycles
$.store..price
The price of everything
$..book[2]
The third book
$..book[-2]
The second to last book
$..book[0,1]
The first two books
$..book[:2]
All books from index 0 (inclusive) until index 2 (exclusive)
$..book[1:2]
All books from index 1 (inclusive) until index 2 (exclusive)
$..book[-2:]
Last two books
$..book[2:]
Book number two from tail
$..book[?(@.isbn)]
All books with an ISBN number
$.store.book[?(@.price < 10)]
All books in store cheaper than 10
$..book[?(@.price <= $['expensive'])]
All books in store that are not "expensive"
$..book[?(@.author =~ /.*REES/i)]
All books matching regex (ignore case)
$..*
Give me everything
$..book.length()
The number of books