CruxDevCruxDev Tools Prompts
dev Utility • Zero-Server Privacy • 100% Client-Side

JSON Path Finder

Click any node in a JSON tree to get its JSONPath, jq filter, JavaScript accessor, and Python dict path — with copy buttons.

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

  1. Paste the JSON document into the left editor.
  2. Type a path such as $.users[0].address.city into the expression field.
  3. Read the matched value in the right panel; undefined means a step did not resolve.
  4. 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.