QA Toolbox logoQA Toolbox

JSONPath Tester

Query a JSON payload with JSONPath and see the matches live — great for API assertions.

Supports $ . .. * [n] [-1] [0,2] [1:4] and filters like [?(@.price < 10)].

About JSONPath Tester

The JSONPath Tester runs a JSONPath query against a payload and shows the matches live — the fastest way to develop and debug the expressions you use in API test assertions, Postman tests, REST Assured checks or jq-style extraction scripts.

Paste a response, type a path, and watch the result update as you edit either side. It supports the everyday JSONPath dialect: child and recursive descent ($.store.book, $..price), wildcards, array indexing including negatives, slices, unions, and filter expressions like $[?(@.price < 10)]. The match count is shown with the results, which makes "why does my assertion match twice?" a five-second question.

How to use

  1. Paste your JSON payload into the "JSON" box (or click "Load sample JSON" for the classic bookstore example).
  2. Type a query into the "JSONPath" field — matches and their count update live as you type.
  3. Try the preset buttons to see common patterns: wildcards, recursive descent, filters, negative indices and unions.
  4. Copy the matched values from the output box into your test or bug report.

Frequently asked questions

Which JSONPath syntax is supported?

The root $, dot and bracket children, recursive descent (..), wildcards (*), array indices including negatives ([-1]), slices ([1:4], [::2]), unions ([0,2] or ['a','b']) and filters with comparison operators or existence tests, such as [?(@.price < 10)] or [?(@.active)].

Why does my filter return nothing?

Comparisons are type-strict: @.id == "42" does not match a numeric 42 — drop the quotes. Also check that the filter is applied to the array's elements (book[?(...)]) rather than to the array itself.

Will the same expression work in my test framework?

For the common core — paths, wildcards, indices, simple filters — yes. Edge cases like script expressions or regex matches vary between JSONPath implementations, so keep assertions to the shared subset when you can.

Related tools