1. O Que E JSONPath
JSONPath e uma linguagem de consulta para documentos JSON, inspirada no XPath para XML. Foi proposta por Stefan Goessner em 2007 e se tornou um padrao de facto para navegar e extrair dados de estruturas JSON, especialmente em contextos de APIs REST e processamento de dados.
Com JSONPath voce pode selecionar elementos especificos, filtrar por condicoes, acessar elementos por indice e percorrer estruturas aninhadas de forma expressiva e concisa.
2. Sintaxe Basica
Toda expressao JSONPath comeca com $ (representa a raiz do documento) e usa operadores para navegar:
- . (ponto): acessa uma propriedade filho ($.store.book).
- .. (dois pontos): descendente recursivo — busca em todos os niveis ($..author).
- [*]: todos os elementos de um array ou objeto.
- [n]: elemento no indice n (base zero). Indices negativos contam do final.
- [a,b]: selecao multipla por indices.
3. Filtros e Expressoes
O operador de filtro ?() permite selecionar elementos com base em condicoes:
- $[?(@.price < 10)]: elementos onde price e menor que 10.
- $[?(@.category == "fiction")]: elementos onde category e "fiction".
- O @ referencia o elemento atual sendo avaliado no filtro.
"JSONPath e essencial para trabalhar com respostas de APIs REST: permite extrair exatamente os campos que voce precisa sem processar o documento inteiro."
4. Casos de Uso Praticos
JSONPath e amplamente usado em diversas ferramentas e contextos:
- Kubernetes: selecao de campos em manifests YAML/JSON com kubectl.
- AWS CloudFormation e Step Functions: navegacao em estruturas de dados de workflow.
- Ferramentas de teste de API: asercoes sobre campos especificos da resposta.
- ETL e pipelines de dados: extracao de campos de respostas JSON de APIs.
- Configuracao de dashboards: selecao de metricas em respostas de APIs de monitoramento.
5. JSONPath vs XPath
JSONPath foi diretamente inspirado pelo XPath mas adaptado para a estrutura do JSON. Principais diferencas:
- JSONPath usa $ como raiz; XPath usa / ou //.
- JSONPath usa . para filhos; XPath usa / para filhos diretos e // para descendentes.
- JSONPath tem suporte nativo a arrays JavaScript; XPath trata tudo como nos XML.
- JSONPath nao tem funcoes built-in como count() ou string(); XPath sim.
6. Perguntas Frequentes
JSONPath tem um padrao oficial?
A proposta original de Goessner nunca foi padronizada formalmente. O RFC 9535 (publicado em 2024) define uma especificacao oficial do JSONPath, mas muitas implementacoes ainda seguem a proposta original com variacoes.
Posso usar expressoes regex nos filtros?
A proposta original nao inclui suporte a regex. Esta implementacao nao suporta regex nos filtros. Para filtragem com regex, processe os resultados programaticamente apos a consulta.
Os dados JSON sao enviados ao servidor?
Nao. Todo o processamento acontece no seu navegador via JavaScript. Nenhum dado e transmitido.
Qual e o tamanho maximo do JSON suportado?
Nao ha um limite explicito, mas JSONs muito grandes (acima de alguns megabytes) podem afetar o desempenho do navegador. Para documentos grandes, considere processar localmente com bibliotecas como jsonpath-ng (Python) ou jsonpath (Node.js).