JSON Path Tester

Evaluate simple JSONPath-style lookups against a JSON document.

Open tool

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.

Try JSON Path Tester

An unhandled error has occurred. Reload ×