Overview
Navigates a JSON document by exact path: type an expression like $.store.book[0].title and the tool walks the document and prints the matched value, pretty-printed, next to the editable JSON. It answers the practical question of what lives at a given path, in contrast to query tools that select many nodes at once.
How It Works
Paste JSON into the left editor and type a path into the expression field at the top. The path starts with an optional $ and consists of dot-separated keys and bracketed array indexes, such as $.store.book[2].price. The right panel shows the value at that path serialized as formatted JSON, or the word undefined if a step does not resolve. Changing either the JSON or the expression updates the result immediately.
Step-by-Step Usage Guide
- Paste the JSON document into the left editor.
- Type a path such as $.users[0].address.city into the expression field.
- Read the matched value in the right panel; undefined means a step did not resolve.
- Adjust either panel until the path points at the data you need.
Technical Specifications & Standards
The evaluator is deliberately a navigator, not a query engine. It strips the leading root marker, splits the remaining path on dots and bracket delimiters, and then walks one step at a time: each part is used as a property name on an object or an index on an array, with explicit guards so hitting null or undefined mid-path yields undefined instead of a thrown exception. That model matches the lookup subset everyone uses, but it excludes the expressive half of the JSONPath grammar that IETF RFC 9535 standardized in 2024: there are no wildcards, so $.store.book[*].title will not select every title; no filter expressions like $..book[?(@.price<10)]; and no recursive descent, so $..author finds nothing. Bracket notation works only for plain indexes here, not for quoted keys with special characters. The result is always exactly one node: the object, array, or scalar at the path, pretty-printed with two-space indent, or the string undefined. If you need multi-node selection, wildcards, or filters, that is the job of the site's separate JSONPath tester, which implements array iteration; this tool optimizes for the common case of confirming what a single path points at, which is also the fastest way to verify that a path in your code or config resolves before you ship it.
Targeted Use Cases
- Verifying the exact path to a field before hardcoding it in application code.
- Extracting a single nested value from a large API response by hand.
- Debugging why a config path resolves to undefined by walking it step by step.
- Teaching or documenting the difference between object keys and array indexes in JSON paths.
Notes & Gotchas
- Use dot notation for keys and brackets only for array indexes; quoted keys with dots inside need manual handling here.
- Treat an undefined result as a broken step: check spelling and types at each level from the root down.
- Do not use wildcards or filter expressions; they are not supported and will return undefined rather than an error.
- For multi-node queries, use a full JSONPath tester; this tool evaluates one exact path per expression.
Frequently Asked Questions
Does this support wildcards like $.items[*].id?
No. The evaluator resolves a single exact path and treats a wildcard as a literal step, which returns undefined. For array iteration and filters, use the site's JSONPath tester instead.
Why do I get undefined instead of an error?
Walking stops cleanly when a step lands on null or a missing key, returning undefined. This makes typos easy to localize: every step before the failure resolves, and the first unresolved step is the culprit.
What path syntax is supported?
An optional leading $, dot-separated object keys, and bracketed numeric indexes such as $.store.book[0].title. Recursive descent, wildcards, quoted keys, and script expressions are outside the supported subset.
How is the result displayed?
The value at the path is serialized as JSON with two-space indentation, whether it is a scalar, an object, or an array, so nested results stay readable in the output panel.