← Voltar à ferramenta JSON

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.

Roda no navegador Sem upload Caminhos nos resultados Filtros e fatias Código aberto (MIT)

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.

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.