O que faz
JSONPath é uma linguagem de consulta para JSON, semelhante ao que o XPath é para XML. Uma consulta como $.store.book[*].title percorre o documento e seleciona os valores que interessam. Este avaliador executa uma expressão JSONPath no JSON que você colar e lista cada correspondência em um array JSON: os valores encontrados, seus caminhos normalizados (por exemplo $['store']['book'][0]['title']) ou ambos.
Ele segue a RFC 9535, o padrão do IETF publicado em 2024, então os resultados batem com as bibliotecas modernas de JavaScript, Java, Python, Go e outras linguagens. Use-o para testar uma consulta antes de colocá-la no código, descobrir por que um filtro não retorna nada ou extrair alguns campos de uma resposta de API grande.
Como usar
- Cole o JSON na caixa JSON, envie um arquivo
.jsonou clique em Exemplo para carregar o clássico documento da livraria. - Digite uma consulta em Expressão JSONPath. As correspondências são atualizadas enquanto você digita.
- Escolha o que Mostrar: valores, caminhos ou pares caminho/valor.
- Copie ou baixe o resultado. Erros de sintaxe na consulta indicam o caractere em que a análise falhou.
Resumo da sintaxe
| Expressão | Significado |
|---|---|
$ | A raiz do documento |
.name ou ['name'] | Um membro de um objeto |
[0], [-1] | Um elemento de array (negativos contam a partir do fim) |
[1:3], [::2] | Um slice: início, fim (exclusivo) e passo |
* | Todos os membros ou elementos |
..name | name em qualquer profundidade |
[?@.price < 10] | Filhos para os quais o filtro é verdadeiro; @ é o item atual |
Os filtros podem combinar condições com &&, || e !, comparar com outras partes do documento usando $ e chamar funções: length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}') para exigir que a string inteira corresponda à expressão regular e search(@.title, 'Ring') para uma correspondência em qualquer ponto.
Exemplo
Com a livraria de exemplo, esta consulta seleciona os títulos dos livros que custam menos de 10:
$.store.book[?@.price < 10].title
e retorna:
["Sayings of the Century", "Moby Dick"]
Troque por $..book[?@.isbn].author para listar os autores dos livros com ISBN, ou por $..price para reunir todos os preços da loja, incluindo o da bicicleta.
Perguntas frequentes
› Qual sintaxe de JSONPath é suportada?
A sintaxe padrão da RFC 9535: nomes de membro com ponto e colchetes, curingas, índices de array (inclusive negativos), slices, busca em descendentes com .., filtros com comparações e && || !, e as funções length(), count(), match(), search() e value(). O estilo antigo ?(@.price < 10) também funciona, porque os parênteses servem apenas para agrupar.
› Por que minha consulta retorna um array vazio?
Um array vazio significa que a consulta é válida, mas nada correspondeu. Confira os nomes dos membros (diferenciam maiúsculas de minúsculas) e se um valor é array ou objeto. Use uma consulta ampla como $..* com Mostrar em Caminhos para ver o que o documento contém.
› Posso usar expressões de script como [(@.length-1)]?
Não. Expressões de script executam código arbitrário e não fazem parte do padrão. Use um índice negativo: [-1] é o último elemento e [-2:] os dois últimos.
› Meu JSON é enviado para um servidor?
Não. A consulta é analisada e avaliada no seu navegador pelo próprio código da página; nada é enviado.