Testador de JSONPath
Testa expressões JSONPath no teu próprio JSON, no navegador. Filtros, slices, descida recursiva, caminhos e JSON Pointers, com exemplos prontos.
Como testar uma expressão JSONPath
- Cola o teu JSON em Dados JSON ou clica em Carregar dados de exemplo para usar o clássico exemplo da livraria.
- Escreve uma expressão em Expressão JSONPath ou escolhe uma em Exemplos.
- O resultado atualiza-se enquanto escreves; Executar a consulta volta a executá-la. A linha de estado indica o número de correspondências.
- Usa Mostrar para alternar entre Valores, Caminhos, JSON Pointers e Caminhos e valores, e copia o resultado.
A sintaxe JSONPath em resumo
| Sintaxe | Significado | Exemplo |
|---|---|---|
$ |
a raiz do documento | $ |
.name ou ['name'] |
um filho | $.store.bicycle |
* |
todos os filhos | $.store.* |
.. |
descida recursiva, a qualquer profundidade | $..author |
[n] |
índice de lista, a partir de 0 | $..book[2] |
[start:end:step] |
slice; os números negativos contam a partir do fim | $..book[-1:] |
[a,b] |
união | $..book[0,1] |
[?(expr)] |
filtro | $..book[?(@.price < 10)] |
^ |
o pai de cada correspondência | $..book[?(@.price > 20)]^ |
~ |
o nome da propriedade em vez do valor | $.store.*~ |
Os resultados são devolvidos pela ordem do documento. Caminhos dá caminhos normalizados como $['store']['book'][0]['title'], e JSON Pointers dá a forma do RFC 6901, /store/book/0/title, prática para JSON Patch ou para os caminhos de erro dos validadores de JSON Schema.
Expressões de filtro: o que é suportado
Os filtros são avaliados com o jsonpath-plus em modo seguro: a expressão é analisada e interpretada por um pequeno avaliador, nunca passada a eval nem a new Function. Dentro de [?( … )] podes usar:
@para o elemento atual,@.campoe@['campo']para os seus membros,@rootpara o documento inteiro ($não está disponível dentro de um filtro);- as comparações
==,!=,===,!==,<,<=,>,>=; - a lógica
&&,||,!, a aritmética+ - * / %e o ternárioa ? b : c; - literais de strings, números,
true,false,nulle expressões regulares; - métodos dos próprios valores, por exemplo
@.title.startsWith('S'),@.tags.includes('new')ou@.title.match(/lord/i); @property(a chave ou o índice do elemento atual),@parente@path(o seu caminho normalizado), ao estilo do jsonpath-plus.
O acesso a constructor, __proto__ e ao construtor Function está bloqueado. Se um filtro falhar num elemento, por exemplo @.isbn.startsWith('0') num livro sem isbn, esse elemento simplesmente não corresponde; um erro de sintaxe na expressão é assinalado. Os filtros escritos à maneira do RFC 9535, [?@.price < 10] sem parênteses, são aceites e lidos como [?(@.price < 10)]. As funções do RFC 9535, como length(), count(), match() e search(), não estão disponíveis: usa em vez delas métodos JavaScript como @.name.length.
Os seletores de tipo do jsonpath-plus também funcionam no fim de um caminho: $..*@number() devolve todos os números, e @string(), @boolean(), @array(), @object(), @null() e @integer() fazem o mesmo para os outros tipos.
Perguntas frequentes
O meu JSON é enviado para um servidor?
Não. A análise e a avaliação acontecem no teu navegador, e os teus dados nunca saem do teu computador.
Porque é que o meu filtro não devolve nada?
Verifica se o caminho antes do filtro seleciona uma lista ou um objeto: $.store.book[?(@.price < 10)] filtra os livros, enquanto $.store[?(@.price < 10)] olha para book e bicycle. Uma propriedade que falte num elemento é undefined, por isso as comparações com ela são falsas.
Qual é a diferença entre `==` e `===`?
Tal como em JavaScript, == converte os tipos ("10" == 10 é verdadeiro), enquanto === compara o tipo e o valor.
Porque é que o resultado está limitado?
Só as primeiras 10 000 correspondências são escritas no resultado, para manter a página reativa; a linha de estado dá a contagem total.
O JSONPath está normalizado?
Sim, desde 2024, pelo RFC 9535. As implementações continuam a diferir, sobretudo nos filtros; esta ferramenta segue o jsonpath-plus, a sintaxe do JSONPath original de Stefan Goessner.
Ferramentas relacionadas
- Formatador e validador de JSON Formatador e validador de JSON gratuito que formata, minifica e verifica JSON no teu navegador, com os erros de sintaxe indicados por linha e coluna.
- Validador de JSON Schema Valida um documento JSON com um JSON Schema no teu navegador. Cada erro é listado com o caminho na instância, a palavra-chave e o caminho no schema.
- Testador de regex Testa expressões regulares JavaScript em tempo real, com correspondências destacadas, grupos de captura, substituição e explicação de cada parte.