JSON Path Tester
Evaluate simple JSONPath-style lookups against a JSON document.
Overview
The JSON Path tester evaluates a JSONPath-style expression against a pasted JSON document and shows the matched nodes. It supports the most-used subset of the syntax — dot navigation, bracket subscripts, slices, wildcards, recursive descent, and filter predicates — so you can prototype queries quickly.
API consumers, automation engineers, and developers writing jq-adjacent filters use a json path tester to confirm an expression returns what they expect before pasting it into a CI workflow or a tool config. It's also the fastest way to learn the syntax by experimenting against a real document.
How it works
JSONPath, formalised by RFC 9535 in 2024 but historically known via Stefan Goessner's article, uses $ for the root, .field for member access, [index] for array access, [*] for wildcards, .. for recursive descent, and [?(@.field == 1)] for filters. The tester implements the subset that all major libraries agree on, so expressions written here generally work in Newtonsoft.Json.Path, Jayway, and jsonpath-plus.
Each match is returned with both its value and its canonical path (normalised to bracket subscripts), which is useful when working with mutations or building a patch document afterwards.
Examples
Input:
{ "users": [
{"name":"Alice","age":30,"role":"admin"},
{"name":"Bob","age":42,"role":"user"}
]}
Expression: $.users[*].name
Matches: ["Alice", "Bob"]
Expression: $.users[?(@.role == 'admin')].age
Matches: [30]
Expression: $..name
Matches: ["Alice", "Bob"]
FAQ
How does this differ from the JSONPath playground?
This one focuses on the common subset and shows path output for each match. The dedicated JSONPath playground uses a fuller implementation following RFC 9535 with more advanced operators.
Why doesn't my filter expression work?
Make sure string literals are single-quoted ('admin', not "admin") and that you're using == rather than = for comparison. Both are common JSONPath gotchas.
Can I use it to update values?
No — this tool reads only. For modifications, generate the result with a filter, then apply changes manually or via the JSON Patch tool.