Consulta JSONPath
Última atualização: 2 de outubro de 2026
Execute uma expressão JSONPath em um documento JSON e veja cada correspondência com o caminho onde foi encontrada. A consulta roda no navegador; o documento não é enviado a lugar nenhum.
O que a linguagem de consulta faz
JSONPath é para o JSON o que o caminho de uma pasta é para o sistema de arquivos: um jeito compacto de dizer quais valores você quer. $ é a raiz do documento, .name entra em uma propriedade e […] seleciona dentro de um array.
- Filhos:
$.store.bicycle.color, ou$['store']['bicycle']['color']quando o nome precisa de aspas. - Curingas:
$.store.book[*].titlepega o título de cada livro;$.store.*pega cada valor do objeto store. - Descida recursiva:
$..priceencontra umpriceem qualquer profundidade. Poderoso e fácil de exagerar — veja abaixo. - Índices e fatias:
[0],[-1]para o último,[0:2]para os dois primeiros,[0:5:2]com passo. - Uniões:
[0,2]e['book','bicycle']selecionam vários de uma vez. - Filtros:
[?(@.price < 10)]mantém os itens com preço abaixo de dez, com== != < <= > >=e combinações com&&e||.
Filtros testam existência, não veracidade
Um caminho sozinho dentro de um filtro pergunta se a propriedade está lá. Por isso [?(@.inStock)] corresponde a um item cujo inStock é false: a propriedade existe — a leitura da RFC 9535. Quando você quer o valor, escreva: [?(@.inStock == true)]. É a surpresa mais comum do JSONPath, e é uma propriedade da linguagem, não desta ferramenta.
O que deliberadamente não faz
Funções de filtro como length(), match() e search() não estão implementadas, nem expressões regulares, nem expressões de script entre parênteses, nem as extensões de pai/irmãos que algumas bibliotecas acrescentam. Uma consulta que as use é rejeitada com uma mensagem em vez de devolver em silêncio um resultado errado: a página declara o que suporta, então uma correspondência aqui significa o que diz.
Perguntas frequentes
Qual sintaxe de JSONPath é suportada?
A raiz $, o acesso a filhos com .name ou ['name'], os curingas .* e [*], a descida recursiva ..name e ..*, índices de array incluindo negativos, fatias [start:end:step], uniões como [0,1] e ['a','b'], e filtros [?(@.price < 10)] com os operadores == != < <= > >= combinados com && e ||.
O que não é suportado?
Funções de filtro como length(), match() e search(), expressões regulares, expressões de script entre parênteses e as extensões que algumas bibliotecas acrescentam (referências ao pai e aos irmãos). Uma consulta que as use é rejeitada em vez de devolver em silêncio um resultado errado.
Por que ?(@.inStock) corresponde a itens com inStock igual a false?
Porque um caminho sozinho dentro de um filtro testa existência, não veracidade: pergunta se a propriedade está lá, e uma propriedade definida como false continua lá. Para testar o valor, escreva: ?(@.inStock == true). Essa é a leitura do filtro na RFC 9535.
Cada correspondência diz de onde veio?
Sim. Cada resultado é listado com o caminho onde foi encontrado, na mesma notação de pontos e colchetes usada para escrever consultas, então o caminho pode ser colado de volta em uma consulta ou em outra ferramenta JSON.
Meu documento é enviado para algum lugar?
Não. O documento é analisado com JSON.parse no seu navegador e a consulta roda na memória. Nada é enviado e a página continua funcionando sem conexão.
Por que $..price retornou mais do que eu esperava?
A descida recursiva visita todos os níveis do documento, então ..price encontra uma propriedade price onde estiver — dentro de arrays, objetos aninhados e ramos não relacionados. Para restringir, ancore a consulta com mais caminho, por exemplo $.store.book[*].price.
Prefere verificar o documento com um esquema? JSON Schema faz isso. Encontrou um bug? Fale conosco.