JSONPath Tester
Query JSON with JSONPath expressions and see every match with its path
About this tool
Test JSONPath expressions against your own JSON and see every match with both its value and its concrete path. Supports the syntax that covers day-to-day use: dot and bracket notation, array indices (including negative), wildcards, unions (['a','b']) and recursive descent ($..price).
The per-match path output is the quietly useful part: query $..id against a deep document and each result tells you exactly where it lives ($.data.items[3].id), ready to paste into code. It turns "somewhere in this blob" into an exact address.
Filter expressions ([?(@.price < 10)]) are not implemented yet — the tool says so explicitly instead of returning wrong results. For structural extraction, which is most JSONPath use, everything works.
Frequently asked questions
- What is the difference between $.a.b and $..b?
- $.a.b follows one exact route: key a at the root, then key b inside it. $..b (recursive descent) finds every b anywhere in the document at any depth. Recursive descent is powerful but can surprise — it also matches b keys nested inside things you did not consider.
- How do I access keys with spaces or dashes?
- Bracket notation with quotes: $['my key'] or $.data['content-type']. Dot notation only works for keys that are valid identifier-like names.
- Do negative array indices work?
- Yes — [-1] is the last element, [-2] second-to-last, matching the convention popularized by Python and adopted by RFC 9535. [0] remains the first element.
- Is JSONPath standardized?
- Since 2024, yes — RFC 9535 defines the syntax and semantics. Implementations written before it differ in edge cases (especially filters and unions), so the same expression may behave differently across libraries; test against the implementation you deploy with.