JSONPath Tester

Test and evaluate JSONPath expressions against your JSON online.

JSONPath reference

Basics

  • $ → root element
  • $.store.book → access property
  • [0] → array index
  • * → wildcard
  • ..author → recursive descent

Examples

  • $.store.book[*].title
  • $..price
  • $.store.book[?(@.price < 10)]

Filters

  • ?(@.key == value)
  • ?(@.price > 20)
input.json
result.json

About the JSONPath Evaluator

Pull exactly the values you need out of a large JSON document with a JSONPath expression - results update as you type.

🛠️
How to use it
  1. Paste your JSON into the input.json editor, or click Load Sample.
  2. Type a JSONPath expression such as $.store.book[*].author in the query bar.
  3. Matches appear in result.json as you type; click Search to run it again.
  4. Open the JSONPath reference for syntax, filters and examples.
💡
Tips & use cases
  • Use .. (recursive descent) to find a key at any depth, e.g. $..price.
  • Filters like $.items[?(@.price < 10)] select array elements by condition.
  • See the JSONPath cheat sheet for the full syntax.

JSONPath Tester Online

JSONPath is a query language for JSON, similar to XPath for XML. Paste your JSON, type an expression such as $.store.book[*].author and this JSONPath evaluator returns every matching value instantly - useful for building queries for API tests, config lookups and data extraction.

📄

JSONPath examples

Results below are for this sample document:

{
  "store": {
    "book": [
      { "category": "reference", "author": "Nigel Rees",
        "title": "Sayings of the Century", "price": 8.95 },
      { "category": "fiction", "author": "Evelyn Waugh",
        "title": "Sword of Honour", "price": 12.99 },
      { "category": "fiction", "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8", "price": 22.99 }
    ],
    "bicycle": { "color": "red", "price": 19.95 }
  }
}
ExpressionWhat it selectsResult
$.store.book[*].authorAll authors["Nigel Rees","Evelyn Waugh","J. R. R. Tolkien"]
$..priceEvery price anywhere in the document (recursive descent)[8.95,12.99,22.99,19.95]
$.store.book[0].titleTitle of the first book["Sayings of the Century"]
$.store.book[-1:]Last book (negative slice)[{ …"The Lord of the Rings"… }]
$.store.book[?(@.price < 10)].titleTitles of books cheaper than 10 (filter)["Sayings of the Century"]
$.store.book[?(@.isbn)].titleTitles of books that have an isbn field["The Lord of the Rings"]
$.store.book[?(@.category === "fiction" && @.price > 15)].authorAuthors of fiction books over 15 (combined filter)["J. R. R. Tolkien"]
$.store.*~Property names under store["book","bicycle"]

Need the full syntax? See the JSONPath cheat sheet.

JSONPath FAQ

Which JSONPath implementation does this tester use?

It uses JSONPath-Plus, which supports the standard Goessner syntax plus extras such as ~ for property names and JavaScript-style filter expressions.

How do JSONPath filters work?

A filter [?( )] keeps array items where the expression is true. @ is the current item, so $.store.book[?(@.price < 10)] returns books with a price below 10. Combine conditions with && and ||.

Why is the result always an array?

A JSONPath expression can match any number of values, so results are returned as a list - even when there is only one match.

What's the difference between JSONPath and JMESPath?

JSONPath selects values from a document. JMESPath can also reshape results (projections, functions, multi-select). Try JMESPath in the JSON Search tool or read the JMESPath tutorial.

Is my JSON uploaded to a server?

No. Expressions are evaluated entirely in your browser.