🔍

JSONPath Tester

Evaluate JSONPath live — with wildcards, recursive descent and filters — and see every match and its exact path.

  • $.store.book[0].title
    "The Silent River"
  • $.store.book[1].title
    "Mountain Code"
  • $.store.book[2].title
    "Desert Gardens"
Supported syntax: $ root · .key / ['key'] child · [0] / [-1] index · [*] wildcard · ..key recursive descent · [?(@.price > 10)] filters with ==, !=, >, >=, <, <= or bare existence [?(@.key)]. Slices and script expressions are not supported.

Frequently Asked Questions

What JSONPath syntax is supported?

Root $, dot and bracket child access, numeric indexes including negative ones, wildcards [*] and .*, recursive descent (..key and ..[*]), and filters comparing @ fields with ==, !=, >, >=, <, <= plus bare existence checks like [?(@.key)]. Slices and script expressions are not supported and the page says so openly.

What does recursive descent (..) do?

It searches at every depth, not just direct children. $..price finds the price key in every object anywhere in the document — handy for exploring unfamiliar JSON before writing an exact path.

Why does my filter return nothing?

Check the types: price > 10 only matches numbers, and string comparisons need quotes, e.g. [?(@.color == 'red')]. Also remember the filter applies to items of an array — put it where the array is: $.store.book[?(@.price > 10)] not $.store[?(@.price > 10)] unless store itself is an array.

Is this the official JSONPath standard?

JSONPath was standardised as RFC 9535 in 2024; this evaluator implements the widely used core syntax (the same subset most libraries agree on). Where dialects differ — especially filters — test results here before wiring an expression into code.

Related Tools