JSONPath Tester

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
JSON
Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand JSONPath Tester

JSONPath é uma linguagem de consulta para JSON, e este testador executa uma expressão sobre os seus dados e devolve todos os valores que ela encontra.

How it works

Uma expressão começa em $, a raiz do documento, e cada passo estreita o conjunto de valores levado adiante: .name e ['name'] tomam uma chave, [2] toma um elemento do array e um índice negativo conta a partir do fim, * toma todos os filhos, ..name busca aquela chave em todos os níveis, e [?(@.price < 10)] mantém os elementos do array cujo campo satisfaz a comparação. O resultado é sempre uma lista, e uma lista vazia é uma resposta válida, e não um erro.

When to use it

  • Extrair um campo de uma resposta de API profundamente aninhada sem escrever o percurso à mão.
  • Descobrir a expressão certa antes de colocá-la em um arquivo de configuração — Kubernetes, Jenkins, testes do Postman e muitas ferramentas de log aceitam JSONPath.
  • Contar quantos itens de uma resposta satisfazem uma condição.
  • Encontrar todas as ocorrências de uma chave quando você não sabe onde no documento ela está.

Watch out for

  • Um filtro aceita uma comparação. [?(@.price < 10 && @.stock > 0)] não é suportado, e os filtros se aplicam a arrays — usar um contra um objeto não encontra nada.
  • A sintaxe de fatiamento não é suportada e falha em silêncio, não em alto e bom som: [0:2] é lido como índice 0 e devolve um único elemento.
  • A descida recursiva encontra mais do que você espera. $..id devolve todos os id de todos os níveis, incluindo os que estão dentro de objetos aninhados sem relação, na ordem do documento.
  • O JSONPath não teve norma formal até a RFC 9535, em 2024, então as implementações discordam em casos de borda. Uma expressão que funciona aqui pode se comportar de outro jeito no Jayway, no jsonpath-plus ou no campo de consulta de um provedor de nuvem — teste onde ela vai de fato rodar.

Not the right tool for: Transformar dados. O JSONPath seleciona valores; remodelá-los em um novo documento é para o que servem o jq e o JMESPath.

Frequently Asked Questions

Qual é a diferença entre $.store.book[*].title e $..title?

$.store.book[*].title percorre um caminho específico e pega os títulos do array book. $..title usa descida recursiva (..) para encontrar TODAS as chaves "title" em qualquer lugar do documento, em qualquer nível de aninhamento. A descida recursiva é poderosa, mas pode devolver resultados inesperados em documentos complexos.

Como funcionam as expressões de filtro?

As expressões de filtro usam a sintaxe [?(@.chave operador valor)]: $..book[?(@.price < 10)] encontra todos os livros com preço abaixo de 10. Operadores: == != < <= > >=. O símbolo @ se refere ao elemento que está sendo avaliado.

O JSONPath é padronizado?

O JSONPath foi proposto por Stefan Goessner em 2007, mas não teve norma formal até a RFC 9535 (2024). Implementações diferentes têm diferenças sutis. Esta ferramenta implementa o subconjunto comum de Goessner, compatível com a maioria das bibliotecas (jsonpath-plus, Jayway, json-path).

How to Use JSONPath Tester

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.