Como usar
- Cole o documento JSON em Documento JSON. Use o exemplo para experimentar a ferramenta primeiro.
- Digite a Consulta JSONPath no campo abaixo dele, começando com $. Os filtros vão entre colchetes: [[email protected] < 10].
- Leia a contagem de Resultados, depois a tabela Resultados, em ordem: cada linha tem o caminho de um resultado e o seu valor.
- 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
- RFC 9535 (em inglês): JSONPath: Query Expressions for JSON, seções 1.5, 2.3, 2.4, 2.5 e 2.7
- RFC 9485 (em inglês): I-Regexp: An Interoperable Regular Expression Format, seções 3 e 5.3
Números e texto verificados pela última vez em terça-feira, 10 de novembro de 2026.