JSONPath Tester

Test JSONPath expressions against JSON data and see matching results

What is it and how does it work?

JSONPath is a query language for JSON, analogous to XPath for XML. It lets you extract values from deeply nested JSON structures using path expressions rather than writing loops and property accesses in code. A path like $.store.books[*].author selects the author field from every book in the store array. This is useful in API response processing, testing assertions, configuration templating, and tools like Kubernetes patches or AWS Step Functions.

This tester accepts a JSON document and a JSONPath expression and returns all matching values. It supports the standard operators: dot notation ($.a.b), bracket notation ($['a']['b']), wildcard (*), recursive descent (..), array slices ([0:2]), filters (?(@.price < 10)), and union ([a,b]). Real-time highlighting shows which parts of the JSON match your expression as you type.

Common use cases

Frequently asked questions

What is the difference between JSONPath and jq?

JSONPath is a query language that selects values from JSON. jq is a more powerful command-line processor that not only queries but also transforms, filters, and reshapes JSON using a full expression language. JSONPath is simpler and embedded in many tools (Kubernetes, AWS, Jayway); jq is richer but requires installation.

What does the .. recursive descent operator do?

.. (double dot) searches all levels of the JSON tree for the given key. $..author finds every "author" field at any depth, whereas $.store.books[*].author only looks at the specific path.

Are there different JSONPath implementations?

Yes — JSONPath was originally defined informally by Stefan Goessner and has been implemented inconsistently. Major variants are Goessner (JavaScript), Jayway (Java/Android), and the newer RFC 9535 standard. Subtle differences exist in filter syntax and how root and current are referenced. This tool follows the RFC 9535 / Jayway conventions.

What is the difference between $.a and $['a']?

Both select the same key "a" from the root object — they are syntactically equivalent. Dot notation is cleaner for simple identifiers. Bracket notation is required for keys containing spaces, hyphens, or starting with numbers, e.g. $['content-type'] or $['2FA enabled'].

JSON

JSON Formatter · JSON Minifier · JSON Validator · JSON to CSV · JSON ↔ YAML · JSON Flatten