JSONPath Playground
Run JSONPath expressions against any JSON document.
Overview
The JSONPath playground evaluates expressions in the JSONPath query language against a JSON document and returns the matching nodes. It follows the syntax in RFC 9535 — the 2024 standardisation of what was previously a loose collection of competing implementations.
API consumers, automation engineers, and developers building tools that filter JSON reach for a jsonpath playground when prototyping a filter, learning the syntax, or comparing how their expression behaves under the standard. It's also a good way to verify cross-library portability before adopting JSONPath in a long-lived integration.
How it works
JSONPath uses $ for the root, .field and ['field'] for child access, [*] for wildcard, .. for recursive descent, [start:end:step] for slices, and filter expressions [?(@.x > 1)] for value-based selection. RFC 9535 nails down evaluation semantics that previously differed between Goessner's reference, Jayway's Java implementation, and jsonpath-plus in Node.
The playground parses the expression, walks the document, and returns each matched node alongside its normalised path. Filters use ECMAScript-style comparisons; functions like length(), count(), match(), and search() are available per the RFC's built-in library.
Examples
Input:
{ "users": [
{"name":"Alice","age":30,"tags":["admin"]},
{"name":"Bob","age":42,"tags":["dev","ops"]}
]}
$.users[*].name
→ ["Alice", "Bob"]
$.users[?(@.age >= 35)].name
→ ["Bob"]
$..tags[*]
→ ["admin", "dev", "ops"]
FAQ
How does this differ from JMESPath?
JSONPath is a query language with wildcards, descent operators, and filter predicates; JMESPath is a similar query language but with stricter grammar and explicit result shaping (multi-select hashes, projections). Both have their fans; pick whichever your downstream tools already speak.
Are RFC 9535 normalised paths supported?
Yes — every match comes with a normalised path in the form $['users'][0]['name']. That path can be used as an unambiguous pointer back to the source document.
Can I use it for in-place updates?
JSONPath itself only reads; the RFC doesn't standardise mutations. Pair this with JSON Patch to apply changes to selected paths.