Query nested JSON using supported JSONPath selectors
JSONPath Query Tester selects values from nested JSON using a path expression. It is useful when a response contains many branches but you know the field or array item you need.
When should you use it?
- Extract every name from a team array.
- Test a path before adding it to an integration.
- Copy exact source values and their locations.
Example: select every team member name
Paste this document and run $.team[*].name in the query field. The wildcard selects each array item. This excerpt lists the exact paths and values contained in the tester report.
{"team":[{"name":"Alex"},{"name":"Sam"}]}$["team"][0]["name"] → "Alex"
$["team"][1]["name"] → "Sam"Build a path one segment at a time
Begin at $ for the root, then add a property name or zero-based array index. A wildcard selects all children at that step; a recursive name finds that name deeper in the tree. Bracket notation is useful when a property contains punctuation. Check a short path first, then extend it so an empty result is easier to diagnose.
Distinguish a location from a filtering language
This query tool supports a documented subset: root, child names and indexes, wildcards, and recursive names. Filters, slices, and unions are unsupported. An expression copied from another JSONPath library may therefore fail even if that library accepts it. Results include exact source values and paths, which helps identify where a match came from. A query step exceeding 1,000 matches fails with a request to narrow the path; it does not return a partial selection.
Find a value without scanning every branch.
Enter JSON and a path expression. The result lists exact source values with unambiguous bracket-notation locations.
Paste JSON
Load a valid document without duplicate property names.
Write a query
Try $.team[*].name or $..name to find values.
Use the matches
Copy or download the matching paths and original JSON values.
How do I select every name in a nested JSON array with JSONPath?
Start the query at the root $, select the array property, use [*] for every item, then select the name property. The tester returns source values and their normalized bracket paths so you can verify which record each match came from.
JSONPath query for an array of people
textJSON: {"team":[{"name":"Alex"},{"name":"Sam"}]}
Query: $.team[*].name
Matches: "Alex", "Sam"Run the query in the second input, not in the JSON editor. The two matches retain their original array indexes.
Can I use JSONPath filters such as [?@.score > 10] here?
No. This tester supports child names, indexes, wildcards, and recursive names; filters, slices, and unions from broader JSONPath syntax are outside its current subset.
What should you check before using the result?
Filters, slices, unions, and arbitrary expressions are not supported. Duplicate object names make paths ambiguous and are rejected; output stops at 1,000 matches.
Supported query syntax
Start at $; use .name, ["name"], [0], [*], .*, ..name, or ..*. The tester supports a documented subset of JSONPath. It never evaluates expressions as JavaScript.
Exact source values
Matched values are copied from the original JSON text, preserving number spelling. Duplicate names are rejected because a path would be ambiguous. Results stop at 1,000 matches; narrow the query for larger documents.
Technical reference: JSONPath specification · RFC 9535 (this tool supports a subset)