JSONPath Tester
Test and evaluate JSONPath expressions against your JSON online.
JSONPath reference
Basics
$→ root element$.store.book→ access property[0]→ array index*→ wildcard..author→ recursive descent
Examples
$.store.book[*].title$..price$.store.book[?(@.price < 10)]
Filters
?(@.key == value)?(@.price > 20)
About the JSONPath Evaluator
Pull exactly the values you need out of a large JSON document with a JSONPath expression - results update as you type.
- Paste your JSON into the input.json editor, or click Load Sample.
- Type a JSONPath expression such as
$.store.book[*].authorin the query bar. - Matches appear in result.json as you type; click Search to run it again.
- Open the JSONPath reference for syntax, filters and examples.
- Use
..(recursive descent) to find a key at any depth, e.g.$..price. - Filters like
$.items[?(@.price < 10)]select array elements by condition. - See the JSONPath cheat sheet for the full syntax.
JSONPath Tester Online
JSONPath is a query language for JSON, similar to XPath for XML. Paste your JSON, type an expression such as $.store.book[*].author and this JSONPath evaluator returns every matching value instantly - useful for building queries for API tests, config lookups and data extraction.
JSONPath examples
Results below are for this sample document:
{
"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": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8", "price": 22.99 }
],
"bicycle": { "color": "red", "price": 19.95 }
}
}| Expression | What it selects | Result |
|---|---|---|
$.store.book[*].author | All authors | ["Nigel Rees","Evelyn Waugh","J. R. R. Tolkien"] |
$..price | Every price anywhere in the document (recursive descent) | [8.95,12.99,22.99,19.95] |
$.store.book[0].title | Title of the first book | ["Sayings of the Century"] |
$.store.book[-1:] | Last book (negative slice) | [{ …"The Lord of the Rings"… }] |
$.store.book[?(@.price < 10)].title | Titles of books cheaper than 10 (filter) | ["Sayings of the Century"] |
$.store.book[?(@.isbn)].title | Titles of books that have an isbn field | ["The Lord of the Rings"] |
$.store.book[?(@.category === "fiction" && @.price > 15)].author | Authors of fiction books over 15 (combined filter) | ["J. R. R. Tolkien"] |
$.store.*~ | Property names under store | ["book","bicycle"] |
Need the full syntax? See the JSONPath cheat sheet.
JSONPath FAQ
Which JSONPath implementation does this tester use?
It uses JSONPath-Plus, which supports the standard Goessner syntax plus extras such as ~ for property names and JavaScript-style filter expressions.
How do JSONPath filters work?
A filter [?( )] keeps array items where the expression is true. @ is the current item, so $.store.book[?(@.price < 10)] returns books with a price below 10. Combine conditions with && and ||.
Why is the result always an array?
A JSONPath expression can match any number of values, so results are returned as a list - even when there is only one match.
What's the difference between JSONPath and JMESPath?
JSONPath selects values from a document. JMESPath can also reshape results (projections, functions, multi-select). Try JMESPath in the JSON Search tool or read the JMESPath tutorial.
Is my JSON uploaded to a server?
No. Expressions are evaluated entirely in your browser.