Testador de JSONPath

Cole um documento JSON e digite uma consulta JSONPath. Você recebe o número de resultados e, para cada um, o caminho normalizado e o valor. A consulta roda no seu navegador e nada é enviado.

Gratuita Funciona no seu navegador Verificada em terça-feira, 10 de novembro de 2026

O texto deve ser JSON válido. O exemplo é o documento da livraria (bookstore) da RFC 9535, seção 1.5.

Começa com $, a raiz. Os filtros usam @ para o item testado, como em [[email protected] < 10]. Espaços no início e no fim são ignorados.

Resultado

Resultados — O número de nós que a consulta seleciona. Um nó pode ser selecionado mais de uma vez quando a consulta o repete.
Resultados, em ordem

Esta ferramenta funciona no seu navegador. O que você digita não é enviado para nós.

Como usar

  1. Cole o documento JSON em Documento JSON. Use o exemplo para experimentar a ferramenta primeiro.
  2. Digite a Consulta JSONPath no campo abaixo dele, começando com $. Os filtros vão entre colchetes: [[email protected] < 10].
  3. Leia a contagem de Resultados, depois a tabela Resultados, em ordem: cada linha tem o caminho de um resultado e o seu valor.
  4. Se uma mensagem mostrar a posição de um problema, veja esse caractere da consulta e corrija os colchetes, as aspas ou os pontos.

Como uma consulta seleciona nós

Uma consulta é uma lista de segmentos depois de $. Um segmento filho, como .store ou [0], seleciona os filhos de cada nó que ele alcança, e um segmento descendente, como ..author, visita o nó e todos os seus descendentes antes de selecionar. Os nós de um segmento vêm na ordem da entrada, e um array é sempre lido na sua ordem (RFC 9535, seções 2.5 e 2.5.2.2).

Um seletor de nome casa com um membro de exatamente esse nome, e só dentro de um objeto. Um índice negativo conta a partir do fim do array, então -1 é o último elemento. Uma fatia como [1:5:2] toma o início, o fim e o passo, e um passo de 0 não seleciona nada (seção 2.3.4.2).

Filtros, funções e o que a ferramenta recusa

Um filtro [?...] testa cada filho de um array ou objeto. As comparações usam ==, !=, <, <=, > e >=; && , || e ! combinam testes, e parênteses agrupam. Um membro ausente é Nothing, e dois valores Nothing são iguais. Números são comparados com números, texto com texto, e um valor de um tipo nunca é igual a um valor de outro tipo (seção 2.3.5.2).

As funções length, count, value, match e search são aceitas como a RFC 9535 as define. match e search recebem uma expressão regular escrita em I-Regexp, o formato da RFC 9485; um padrão que não é I-Regexp válido não casa com nada. Literais de array e de objeto não fazem parte da gramática, então a ferramenta os recusa, e recusa também o resultado de uma função usado sozinho em um filtro, porque a RFC 9535 diz que isso não tem tipos válidos.

O exemplo da livraria

Com o documento de exemplo e a consulta $.store.book[[email protected] < 10].title, os livros mais baratos que 10 são o primeiro e o terceiro. Seus títulos são os dois resultados abaixo, com o caminho normalizado de cada um.

Caminho normalizado Valor (JSON)
$['store']['book'][0]['title'] "Sayings of the Century"
$['store']['book'][2]['title'] "Moby Dick"

Perguntas frequentes

Por que uma consulta não retorna nada quando a chave existe?

Um seletor de nome só casa com um membro de um objeto com exatamente esse nome, e a comparação diferencia maiúsculas de minúsculas. Ele nunca casa com um elemento de um array, então use um índice ou um curinga para um array.

Por que 13 e “13” não são iguais em um filtro?

A RFC 9535 compara valores de tipos diferentes como não iguais (seção 2.3.5.3). Um número e um texto são valores diferentes, então == é falso e != é verdadeiro, mesmo quando os caracteres parecem iguais.

O que um índice negativo seleciona?

Um índice negativo conta a partir do fim do array: -1 é o último elemento e -2 é o anterior a ele. Um índice fora do array não seleciona nada e não é um erro (seção 2.3.3.2).

Por que a ferramenta recusa length(@) quando ele está sozinho em um filtro?

length retorna um número, e um filtro precisa de um teste que seja verdadeiro ou falso. Compare o resultado, como em [?length(@.title) > 15], que tem tipos válidos.

A ferramenta envia meu JSON para algum servidor?

Não. O documento é lido pelo seu navegador com JSON.parse, a consulta também roda ali, e nada é guardado. A página não faz nenhuma requisição à rede.

Fontes

Números e texto verificados pela última vez em terça-feira, 10 de novembro de 2026.

Usamos cookies necessários para o site funcionar. Com o seu consentimento, o Google também usa cookies de publicidade para mostrar anúncios personalizados. Se você recusá-los, continuará vendo anúncios, mas eles não serão personalizados.