Pular para o conteúdo

Testador de JSONPath

JSONPath Tester

Executa uma expressão JSONPath contra um documento e destaca os nós encontrados enquanto você digita.

Executa uma consulta JSONPath contra um documento e mostra cada nó que ela selecionou, com o caminho até cada um. Ele implementa a RFC 9535 — o padrão de 2024 — em vez de uma das implementações mutuamente incompatíveis dos vinte anos anteriores, o que importa assim que a sua consulta tem um filtro.

🔒 Roda inteiramente no seu navegadorjsonjsonpathquerytest

Consulta

A partir da raiz: em qualquer ponto abaixo, o membro “book”; depois os filhos que passam pelo filtro; depois o membro “title”.

Documento

Correspondências

Os resultados aparecem aqui enquanto você digita.

Isto segue a RFC 9535, o padrão de 2024, e não os vinte anos de implementações incompatíveis que vieram antes. As diferenças que pegam: um resultado é uma lista de nós e mantém as duplicatas, .. visita um nó antes dos filhos dele, um membro ausente só é igual a outro membro ausente, e comparar com uma consulta que poderia casar com vários nós é erro de sintaxe em vez de palpite. Os padrões que vão dentro de match() e search() vão para o motor de expressões regulares do próprio navegador, que aceita mais do que o dialeto I-Regexp que a RFC especifica.

Como usar

  1. Cole o documento

    Qualquer coisa que seja analisada como JSON. A consulta roda em um worker, então um documento grande mantém a página responsiva enquanto você digita.

  2. Escreva a consulta, ou parta de um exemplo

    Os botões abaixo da caixa cobrem as formas de que as pessoas precisam: um curinga, uma busca por descendentes, um slice, um filtro, uma expressão regular e uma função. Acima deles aparece uma descrição em linguagem simples do que a sua consulta significa.

  3. Leia as correspondências com seus caminhos

    Cada resultado carrega o caminho normalizado que chegou até ele, então você pode ver se uma correspondência veio de onde esperava. A linha de estatísticas diz se a consulta é singular — capaz de selecionar no máximo um nó —, que é o que um JSON Pointer seria.

Perguntas frequentes

Minha consulta funciona em outra ferramenta, mas aqui não.

Provavelmente uma diferença da RFC 9535. O padrão removeu coisas que implementações antigas permitiam: expressões de script em `()`, `$..[?(@.x)]` com a sintaxe antiga de filtro entre parênteses, e comparar contra uma consulta que poderia corresponder a vários nós — esta última agora é um erro de sintaxe em vez de um palpite.

Por que o mesmo valor aparece duas vezes?

Porque o resultado é uma lista de nós, não um conjunto. `$..price` chegando ao mesmo nó por dois ramos o lista duas vezes, de propósito: deduplicar perderia a informação de onde cada correspondência veio.

As expressões regulares de `match()` são padrão?

Não exatamente. A RFC especifica I-Regexp, um dialeto pequeno; os padrões daqui são entregues ao motor do próprio navegador, que aceita mais. Um padrão que funciona aqui pode ser rejeitado por uma implementação estrita — vale saber antes de colocar um em produção.

Ele consegue modificar o documento?

Não: JSONPath seleciona, não escreve. Para editar, os caminhos mostrados aqui são ponteiros RFC 6901 e podem ir direto para um JSON Patch, que é o que a ferramenta de diff de JSON deste site produz.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.