JSONPath Tester
Test JSONPath expressions against JSON data and see every match with its exact resolved path.
Supported expression subset (pinned for this tool)
This engine follows a Goessner-style subset (see goessner.net/articles/JsonPath). not every feature from Jayway, kubectl, or Postman dialects.
- Navigation:
$root,.key/..keyrecursive descent,..*all descendant values - Brackets:
[n]index,[*]wildcard,[0,2,4]multi-index,[start:end]slice (half-open) - Objects:
.*all own property values at the current level - Filters (on arrays only):
[?(@.a == 1)], comparisons==!=<><=>=, literals (number / boolean / null / quoted string),&&and||, existence[?(@.id)]or[?(@)] - Not supported: bracket-quoted keys
['key'], scripts(@.length-1), regex=~, parent^, filters on non-arrays
Background: What is JSONPath?
JSONPath Online Evaluator and Tester
Paste JSON, write a JSONPath expression starting with $, and see every matching value with its resolved path. The evaluator supports wildcards, recursive descent (..), array filters ([?(@...)]), slices, and multi-index, making it useful for debugging API responses, crafting Postman assertions, or learning JSONPath syntax from scratch.
Expression vs. Result
// Select a nested value $.user.address.city // All prices in an array $.products[*].price // Recursive: every "id" anywhere $..id // Filter: items over $10 $.items[?(@.price > 10)] // Slice: first three items $.items[0:3]
"London"
[9.99, 14.99, 4.50, 29.00]
[1, 2, 3, 42, 7]
[
{ "name": "Widget", "price": 14.99 },
{ "name": "Gadget", "price": 29.00 }
]
[{ "name": "A" }, { "name": "B" }, { "name": "C" }]How to Use
- Paste your JSON data into the left editor panel
- Type a JSONPath expression starting with
$in the expression field - Press Enter or click Evaluate to run the query
- Review each match: the extracted value and its full resolved path are shown side by side
Features
- Root navigation with
$, dot notation, and bracket notation - Wildcard
*for all array items or all object keys - Recursive descent
..to search every level of nesting - Array filters
[?(@.field op value)]with==,!=,<,>,<=,>= - Slices
[start:end]and multi-index[0,2,4] - Shows matched value and exact resolved path for every result
- 100% private: runs entirely in your browser, nothing is uploaded
Frequently Asked Questions
What is JSONPath syntax?
JSONPath expressions start with $ (the root object). Use dot notation ($.user.name) to navigate keys, [*] for all array items, .. for recursive descent, and [?(@.field > value)] for filters. Slices like [0:3] and multi-index like [0,2,4] are also supported.
How do I select all values in an array?
Use the wildcard expression $.arrayName[*] to select every element. To extract a specific field from every element, write $.arrayName[*].fieldName. For example, $.items[*].price returns the price from every item in the array.
What is the difference between dot and bracket notation?
Dot notation ($.user.name) is shorter and works for simple alphanumeric keys. Bracket notation ($.user["first name"]) is required when the key contains spaces, hyphens, or other special characters. Both navigate to the same value when the key has no special characters.
Related Tools