Test JSONPath expressions against your own JSON and see the matches right away. Supports recursive descent ($..), wildcards, slices and filters.
Results are returned as a JSON array that you can copy or download.
JSONPath is a query language for picking values out of a JSON document, in the same way XPath selects nodes in XML. An expression like $.cities[*].name starts at the root ($) and walks down to the values you want. This tool evaluates JSONPath with the jsonpath-plus library so you can check an expression before using it in code, API tests or monitoring rules.
$..name.If the JSON is invalid or the expression cannot be parsed, an error is shown. If the expression is valid but nothing matches, you will see "No values matched this path."
Examples below use this input:
| Expression | Meaning | Result |
|---|---|---|
$.cities[0].name | Child access and array index | ["London"] |
$.cities[*].name | Wildcard: every element | ["London", "Rome"] |
$..name | Recursive descent: name at any depth | ["London", "Rome", "United Kingdom"] |
$.cities[-1:] | Array slice: the last element | [{"name": "Rome", ...}] |
$.cities[0,1].name | Union of indexes | ["London", "Rome"] |
$.cities[?(@.population > 5000000)].name | Filter: @ is the current item | ["London"] |
$.cities[*]~ | Property names (jsonpath-plus extension) | [0, 1] |
A JSONPath expression can match any number of values, so the tool always returns the list of matches, even when there is only one. An empty array means nothing matched.
No. Parsing and evaluation happen in your browser and nothing is sent to a server.
It uses jsonpath-plus, which follows the original JSONPath proposal by Stefan Goessner with some extensions (such as ~ for property names). Most everyday expressions behave the same as in RFC 9535, but filter expressions here are written in JavaScript syntax, so edge cases can differ from other implementations.