Consulta JSON
Extraia valores de JSON com expressões JSONPath ou JSON Pointer RFC 6901
JSON
Consulta
Consulta JSON
Extraia valores de JSON com expressões JSONPath ou JSON Pointer RFC 6901
Recursos
- Dois modos de consulta lado a lado: JSONPath (alimentado pelo QueryService partilhado com wildcards e acesso por colchetes) e JSON Pointer RFC 6901 (separado por barras, com escape ~0/~1) — escolha a sintaxe que combina com as suas ferramentas existentes
- O wildcard `*` em qualquer segmento expande para todas as chaves de objecto ou elementos de array nesse nível — `$.store.books[*].title` devolve todos os títulos sem escrever um ciclo
- Cada resultado mostra o caminho concreto E o valor: resultados não são uma única resposta mas uma lista de caminhos — uma expansão wildcard produz N linhas para copiar individualmente ou em grupo
- O modo JSON Pointer valida a sintaxe de segmentos: começa com `/`, segmentos inteiros indexam arrays, segmentos nomeados indexam objectos, `~1` descodifica para `/` e `~0` para `~` — mesma semântica do JSON Schema instancePath e JSON Patch
- Botão copiar por resultado escreve o valor para a área de transferência (strings em bruto, estruturas como JSON pretty-print), e Copiar tudo despeja a lista completa `caminho: valor` como texto simples
- Erros de parsing e erros de consulta surgem separadamente com a mensagem completa do motor JS — sabe imediatamente se o JSON ou a expressão são culpados
- Carregar exemplo preenche um pequeno documento de livraria com uma consulta funcional para o modo activo — referência útil de primeira utilização para a sintaxe
- Puramente do lado cliente: JSON, expressões e resultados nunca saem do navegador; funciona offline assim que a página é cacheada
Como usar
- Cole o documento JSON a consultar na área de texto esquerda.
- Escolha um modo: JSONPath (bom para selectores com wildcards) ou JSON Pointer (bom para nomear um único nó sem ambiguidade).
- Escreva a expressão no campo de consulta — exemplos são mostrados no placeholder para cada modo.
- Clique Executar consulta ou prima Enter no campo. Os resultados aparecem com os caminhos concretos e valores; um contador mostra quantos foram encontrados.
- Copie valores individuais com o ícone junto a cada resultado, ou use Copiar tudo para a lista completa `caminho: valor`.
- Use Carregar exemplo para preencher ambas as entradas com um exemplo funcional se for novo na sintaxe.
Dicas e Melhores Práticas
- Quando não tem a certeza se o seu JSON tem uma chave, use primeiro um wildcard para enumerar o que está realmente lá, depois afine.
- Os caminhos JSON Pointer são ordenáveis como strings — útil quando quer comparar conjuntos de caminhos entre duas estruturas.
- Se uma consulta devolve uma correspondência mas esperava várias, verifique erros de digitação (`book` vs `books`) — o JSONPath aqui devolve correspondência exacta, não difusa.
- Para dados profundamente aninhados, JSON Pointer é mais curto que JSONPath porque não carrega separadores `$` e `.` — útil em chat ou mensagens de commit.
- Combine com JSON Árvore: navegue visualmente primeiro, depois copie um pointer conhecido-bom para esta ferramenta para reutilizar.
Perguntas Frequentes
Que sintaxe JSONPath é suportada?
O subconjunto mínimo mas útil: `$` raiz, `.key` acesso a membro, `['key']` acesso com aspas (para chaves com pontos ou caracteres especiais), `[N]` índice de array, e `*` wildcard em qualquer segmento. Expressões de filtro (`[?(@.price < 30)]`), operador descendente (`..`) e slicing (`[1:3]`) não são suportados aqui — para isso use o separador JSONPath do JSON Formatter, que tem um motor mais rico.
Qual a diferença entre JSONPath e JSON Pointer?
JSONPath é uma linguagem de consulta (XPath-para-JSON) — pode seleccionar múltiplos nós via wildcards, descendentes e predicados. JSON Pointer (RFC 6901) é uma notação de caminho — nomeia EXACTAMENTE UM nó e existe ou não. Use JSONPath quando quer um CONJUNTO de resultados; use JSON Pointer quando quer uma localização determinística única (p. ex. para JSON Patch ou para copiar um instancePath falhado de um validador de esquema).
Porque preciso de ambos os modos?
Diferentes ferramentas e padrões usam diferentes notações. Os erros instancePath do JSON Schema são JSON Pointer. fast-json-patch usa JSON Pointer. JSONPath é o que a maioria das CLIs de consulta JSON e bibliotecas esperam. Ter ambos os modos aqui significa que pode copiar um caminho entre ferramentas sem reescrevê-lo.
Como são tratadas chaves com caracteres especiais?
JSONPath: cite-as entre colchetes — `$['weird.key']` acede à chave literalmente chamada `weird.key`. JSON Pointer: faça escape conforme RFC 6901 — `/` numa chave torna-se `~1`, `~` torna-se `~0`. O placeholder mostra a forma padrão para cada modo.
O que acontece se o caminho não corresponder a nada?
Obtém um resultado de 0 correspondências e a nota «A consulta não devolveu resultados» em vez de um erro. Esta é a convenção normal do JSONPath / JSON Pointer: caminhos ausentes são ausência, não falha. Distinga ausência de entrada malformada vendo se a linha de erro apareceu.
Os wildcards podem descer em arrays aninhados?
Sim, em cada nível. `$.users[*].roles[*]` wildcards primeiro através de todos os utilizadores, depois através dos papéis de cada um, produzindo cada string de papel. A tabela de saída mostra o caminho concreto resolvido de cada correspondência (p. ex. `$.users[0].roles[2]`), útil quando quer saber exactamente de onde veio um hit.
É enviado algo para um servidor?
Não. JSON.parse corre no seu navegador, a avaliação JSONPath / JSON Pointer corre no seu navegador, e as correspondências são renderizadas na página sem chamadas de rede. O separador Rede do DevTools não mostra nada ao clicar Executar consulta.
Qual a diferença para o separador de consulta do JSON Formatter?
O JSON Formatter é multi-ferramenta: formatação, validação, esquema, JSONPath, diff. Esta Consulta JSON autónoma é a interface mínima: um URL, dois modos, resultados-em-lista com cópia por resultado, sem superfície extra. Use o Formatter quando quer uma vista única que combina vários fluxos JSON; este quando só quer extrair valores.