JSON Path Finder
Explore JSON as an interactive tree. Click any node to get its JSONPath expression instantly.
No data sent to serverCtrl+Enter
Related Tools
How to Use This Tool
- Paste your JSON into the input textarea.
- Click Parse JSON (or press
Ctrl+Enter) to build the tree view. - Click any node in the tree — its full JSONPath expression and value appear in the right panel.
- Use Copy Path to copy the JSONPath (
$.users[0].name) or Copy Value to copy just the value at that path. - Click Sample to load an example JSON tree to explore the tool quickly.
Privacy: All parsing and tree-building happens in your browser. JSON contents stay local.
JSONPath Syntax (RFC 9535)
Core operators
$ root object / array @ current element (in filters) .field child by name (dot notation) ['field'] child by name (bracket notation, allows special chars) ..field recursive descent — find anywhere in tree [n] array index (0-based) [start:end] array slice (Python-style) [*] all elements (wildcard) [?(expr)] filter expression
Filter operators (in expressions)
== equal != not equal < less than <= less or equal > greater than >= greater or equal && logical AND || logical OR ! negation =~ regex match (RFC 9535)
Functions (RFC 9535)
length(@) length of string/array/object count(...) count matched nodes match(@.field, /re/) regex match search(@.field, /re/) regex search
Path comparison
JSON Pointer (RFC 6901) is similar but simpler — no wildcards or filters, just slashes: /store/book/0/title. JSONPath is more expressive; JSON Pointer is more constrained but unambiguous.
Practical Examples
Sample JSON for the examples below:
{
"store": {
"books": [
{ "title": "Sapiens", "price": 18.99, "author": "Harari" },
{ "title": "Dune", "price": 12.99, "author": "Herbert" },
{ "title": "Stoner", "price": 14.99, "author": "Williams" }
],
"bicycle": { "color": "red", "price": 199 }
}
}Basic queries
$.store.books[0].title → "Sapiens" $.store.books[*].author → ["Harari", "Herbert", "Williams"] $..price → [18.99, 12.99, 14.99, 199] $.store.books.length → 3 (with length() function)
Filters
# Books cheaper than $15 $.store.books[?(@.price < 15)] → [Dune, Stoner objects] # Book titles by Harari $.store.books[?(@.author == "Harari")].title → ["Sapiens"] # Items priced between 100-300 $..[?(@.price >= 100 && @.price <= 300)] → [bicycle object]
Slicing
$.store.books[0:2] → first 2 books $.store.books[-1:] → last book $.store.books[::2] → every other book (0, 2) $.store.books[1:] → all except first
Real-world patterns
# Kubernetes — get pod IPs
kubectl get pods -o jsonpath='{.items[*].status.podIP}'
# AWS Step Functions — extract input field
{ "ResultSelector": "$.statusCode" }
# Postman test — assert API response
pm.expect(responseJson).to.have.jsonPath('data.user.id');
# jq equivalent (similar but different syntax)
.store.books | map(select(.price < 15))