JSONPath Tester
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
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.