About this tool
JSONPath is how most API test frameworks pick values out of a response: REST Assured’s JsonPath, Postman scripts, Karate and many assertion libraries use the same ideas. Writing the expression against a live response saves a round of failed test runs. This tester uses jsonpath-plus with script evaluation turned off, and evaluates filter expressions such as [?(@.price < 10)] with a small built-in interpreter, so nothing you paste is ever executed as code. Every match is shown with its normalised path, which tells you exactly where the value came from.
How to use it
- Paste a JSON response into the left panel, or click “Load sample” for the classic bookstore document.
- Type an expression starting with $; results update as you type.
- Choose whether to show values, paths or both, then copy the result.
- Use the cheatsheet’s “Try” buttons to see recursive descent, slices, unions and filters in action.
JSONPath Tester FAQ
Why does my expression work here but not in REST Assured?
REST Assured uses Groovy GPath, not Goessner JSONPath. The path “store.book.findAll { it.price < 10 }.title” in GPath is equivalent to “$.store.book[?(@.price < 10)].title” here. Simple dotted paths are the same in both, but filters and wildcards use different syntax.
Which filter syntax is supported?
Filters can reference the current item (@) or the root ($), compare with == != < <= > >=, combine with && || and !, and use strings, numbers, true, false and null. Script expressions like [(@.length-1)] and JavaScript method calls are deliberately not executed; use the slice [-1:] for the last element.
Why do I get no matches even though the key exists?
The usual causes are case differences (userId vs userid), missing [*] when the value is inside an array, or a key with a dash or space that needs bracket notation such as $['first-name'].