EN
My tools

JSONPath Tester (RFC 9535)

Run JSONPath queries on your JSON: names, wildcards, slices, recursive descent and ?filters with length(), count(), match(), search() and value().

Matches
2
Result (JSON)
Normalized paths
Matched nodes
#Normalized pathValue
1$['store']['book'][0]['title']"Sayings of the Century"
2$['store']['book'][2]['title']"Moby Dick"
My tools →
Advertisement

JSONPath picks values out of a JSON document with a short expression, the way XPath does for XML. This tester follows RFC 9535, the 2024 IETF standard, so a query that works here behaves the same in any conforming library. You get the matched values as JSON plus each match's normalized path, and filters are run by a small expression evaluator — nothing you type is executed as code.

How to use this tool

  1. Paste the JSON document (the RFC bookstore example is filled in).
  2. Type a query, or pick one from the examples list.
  3. Read the number of matches, the values and their normalized paths.
  4. Untick Pretty-print to get the result on one line.

Formula

$ root · .name or ['name'] child · * all children · ..name descendants · [0] [-1] index · [1:5:2] slice · [?@.price < 10] filter

Filters support == != < <= > >=, && || !, parentheses, @ (current node), $ (root), and the standard functions length(), count(), match() and search() (I-Regexp patterns) and value(). Comparisons need single values, so @.* or @..x cannot be compared directly — the tool reports such queries as errors, as the standard requires. A missing member compares equal only to another missing member.

Example

On the bookstore, $.store.book[?@.price < 10].title returns 2 matches: "Sayings of the Century" (8.95) and "Moby Dick" (8.99). $..author returns the 4 authors, $..book[-1] the Tolkien book, and $.store..price the five prices 8.95, 12.99, 8.99, 22.99 and 399.

Frequently asked questions

Why does my old JSONPath query fail?

Before RFC 9535 every library had its own dialect. Script expressions such as [(@.length-1)] are not standard — use [-1]. Filters may be written ?(@.price<10) or ?@.price<10. Names in brackets need quotes: ['name'].

What is a normalized path?

A unique, canonical path to one node, such as $['store']['book'][0], always with bracket notation and single quotes. It is handy for reporting where a value lives.

Are regular expressions supported?

Yes, through match() (whole string) and search() (anywhere), using the I-Regexp syntax of RFC 9485. Patterns run on a non-backtracking matcher, so even nested repetition such as (a+)+ takes time in proportion to the text and cannot freeze the page. Note that I-Regexp has no anchors: ^ and $ are ordinary characters, and match() always compares the whole string.

Is the order of results guaranteed?

Array elements come in array order. JSON objects have no defined member order; this tool uses the order in which the members were written (numeric-looking keys first, as JavaScript stores them).

Sources

Last updated:

Cite or embed this tool
APA

kakaoCalc. (2026, November 8). JSONPath Tester (RFC 9535). https://kakao.mobile/tools/jsonpath-tester/

MLA

“JSONPath Tester (RFC 9535).” kakaoCalc, 8 Nov. 2026, kakao.mobile/tools/jsonpath-tester/.

Paste this code into your page. The widget runs in your visitors' browsers, shows no ads and keeps a link back to this page. Embedding terms

Advertisement