Extrator de caminho JSON

Cole JSON e insira uma expressão de caminho como $.store.book[0].title para extrair valores.

Resultado

Insira JSON e um caminho, depois clique em Extrair.

Como funciona

  1. Cole seu JSON : insira um objeto ou array JSON no campo de entrada.
  2. Insira uma expressão JSONPath : digite um caminho como $.store.book[*].author ou $.users[?(@.age > 18)] para selecionar os dados desejados.
  3. Visualize os resultados extraídos : os valores correspondentes aparecem instantaneamente no painel de saída. Copie o resultado ou exporte-o.

Por que usar o extrator JSONPath ?

Ao trabalhar com respostas de API complexas ou JSON profundamente aninhado, extrair valores específicos manualmente é lento e sujeito a erros. JSONPath é a linguagem de consulta para JSON, análoga a XPath para XML. Permite segmentar exatamente os dados de que você precisa por meio de uma expressão de caminho concisa, seja um único valor aninhado, todos os elementos de um array ou registros filtrados que correspondam a uma condição. Esta ferramenta torna a exploração JSONPath interativa sem escrever código.

Funcionalidades

Perguntas frequentes

O que é JSONPath ?

JSONPath é uma linguagem de consulta para documentos JSON, análoga ao XPath para XML. Um caminho como $.users[*].name seleciona o campo name de cada objeto no array users. É amplamente usado para testes de API, transformação de dados e processamento JSON.

Como filtrar elementos de um array por uma condição ?

Use uma expressão de filtro : $.items[?(@.price < 50)] retorna todos os elementos cujo preço é inferior a 50. O símbolo @ refere-se ao elemento em avaliação no momento.

Ele suporta busca recursiva ?

Sim. O operador .. realiza uma busca recursiva em todos os níveis. Por exemplo, $..name encontra todas as chaves name onde quer que estejam na estrutura JSON, independentemente da profundidade de aninhamento.

De um post de blog para RFC 9535: a estrada de 17 anos para um padrão JSONPath

Stefan Gössner propôs JSONPath em um único post de blog em fevereiro de 2007, adaptando a ideia do XPath para JSON. Ele publicou uma implementação JavaScript de referência, esboçou a sintaxe (a raiz $, operadores filho ponto e colchete, .. para descida recursiva, * para coringa, [início:fim:passo] para fatiamento de array, [?(...)] para expressões de filtro) e o ecossistema mais amplo seguiu. As implementações proliferaram: jsonpath para JavaScript, JsonPath para Java, jq (Stephen Dolan, 2012) que é adjacente ao JSONPath mas sua própria coisa, jsonpath-ng para Python, JMESPath (AWS, 2014) como rival mais estrito. O problema: cada implementação divergiu. Sintaxe de filtro, semântica de recursão, correspondência de regex, identificadores de raiz, todos sutilmente diferentes entre bibliotecas. Um estudo comparativo de 2023 por Carsten Bormann et al. testou 41 implementações JSONPath distintas contra a mesma entrada e obteve 41 conjuntos de resultados diferentes para a mesma expressão. O Grupo de Trabalho JSONPath da IETF se reuniu em 2020 para corrigir isso. RFC 9535 «JSONPath: Query Expressions for JSON» foi publicada em fevereiro de 2024, tornando-se o primeiro padrão formal para JSONPath, 17 anos após o post original de Gössner. RFC 9535 codifica a sintaxe, define um formato de saída normalizado, requer normalização Unicode para comparações de string, e adiciona um conjunto de testes de conformidade.

Folha de dicas de sintaxe JSONPath

Os sete operadores que cobrem a maioria das consultas do mundo real:

Onde você realmente recorre ao JSONPath

Erros que mordem

JSONPath vs jq vs JMESPath vs JSON Pointer

Mais perguntas frequentes

JSONPath é o mesmo que XPath?

Inspirado por ele, não idêntico. XPath foi finalizado pela W3C em 1999 para XML, JSONPath foi esboçado por Gössner em 2007 para trazer a mesma ideia para JSON. As maiores diferenças: JSONPath usa . e [] em vez de /, JSONPath não tem conceito de namespaces ou atributos XML, JSONPath foi padronizado muito depois (2024 vs 1999), então por anos foi uma sintaxe de facto com muitas implementações incompatíveis.

Por que o mesmo JSONPath dá resultados diferentes em ferramentas diferentes?

Porque JSONPath não foi padronizado até a RFC 9535 (fevereiro de 2024). Antes disso, cada implementação fazia suas próprias escolhas sobre sintaxe de filtro, suporte a regex, identificadores de raiz, regras de escape, e casos limites (arrays vazios, chaves faltantes, coerção de tipo em filtros). Um estudo do grupo de trabalho IETF de 2023 testou 41 implementações na mesma entrada e obteve 41 conjuntos de resultados diferentes. RFC 9535 conserta isso para bibliotecas novas e atualizadas; bibliotecas mais antigas divergirão até migrarem. Sempre verifique se sua biblioteca afirma «conformidade RFC 9535».

Posso modificar o JSON com JSONPath, ou apenas ler?

RFC 9535 define JSONPath estritamente como uma linguagem de consulta: ela retorna valores de um documento, ela não muta. Para modificar JSON, use JSON Patch (RFC 6902), que usa caminhos JSON Pointer e operações add/remove/replace/copy/move/test. Algumas bibliotecas combinam ambas (e.g. jsonpath-plus em JavaScript tem uma extensão de mutação apply()) mas isso não é JSONPath padrão.

JSONPath suporta expressões regulares em filtros?

RFC 9535 adicionou duas funções regex: match(node, regex) corresponde à string inteira, search(node, regex) corresponde a qualquer substring. Exemplo: $.book[?(match(@.isbn, "^978-"))]. O sabor regex é I-Regexp (RFC 9485, um perfil de regex de XML Schema), não PCRE ou regex JavaScript. Bibliotecas mais antigas usavam o sabor regex da linguagem host, o que torna consultas regex especialmente não portáveis.

Meu JSON é enviado para algum lugar quando uso esta ferramenta?

Não. A avaliação de caminho executa inteiramente no motor JavaScript do seu navegador. Abra a aba Rede em DevTools e execute uma consulta, você verá zero requisições de saída durante a avaliação. Seguro para respostas API com segredos, dumps de banco de dados com PII, ou arquivos de configuração contendo credenciais.

Ferramentas relacionadas

Visualizador de árvore JSON Formatador e validador JSON gratuito on-line Conversor de JSON para CSV Comparador JSON