jsongrep: Uma Ferramenta de Consulta JSON Baseada em DFA Que Supera o jq em Benchmarks

✍️ OpenClawRadar📅 Publicado: March 27, 2026🔗 Source
jsongrep: Uma Ferramenta de Consulta JSON Baseada em DFA Que Supera o jq em Benchmarks
Ad

O que o jsongrep faz

jsongrep (binário jg) recebe uma consulta e uma entrada JSON e imprime cada valor cujo caminho através do documento corresponda à consulta. Ele trata documentos JSON como árvores onde objetos e arrays são ramificações, escalares são folhas, e chaves e índices rotulam as arestas. A linguagem de consulta é uma linguagem regular sobre o alfabeto de chaves e índices.

Recursos da Linguagem de Consulta

Caminhos com ponto selecionam campos aninhados por nome: jg 'roommates[0].name' retorna roommates.[0].name: "Alice".

Curingas correspondem a qualquer chave única (*) ou qualquer índice de array ([*]): jg 'favorite_drinks[*]' retorna todos os elementos do array.

Alternância (|) corresponde a qualquer ramificação: jg 'name | roommates' retorna ambos os campos.Descida recursiva usa * e [*] dentro de uma estrela de Kleene para percorrer arbitrariamente profundamente: jg '(* | [*])*.name' encontra cada campo name em qualquer profundidade. A flag -F fornece uma abreviação: jg -F name faz o mesmo.

Opcional (?) corresponde a zero ou uma ocorrência: jg 'roommates[0].favorite_food?' retorna tanto o objeto pai quanto o valor do campo.

Ad

Abordagem Técnica

jsongrep compila consultas em autômatos finitos determinísticos (DFA) usando um pipeline que inclui: análise da consulta, tratamento do JSON como uma árvore, construção de um NFA usando o algoritmo de Glushkov, determinização via construção de subconjuntos, e busca usando DFS com transições DFA. Isso permite processamento em uma única passagem com trabalho O(1) por símbolo de entrada, evitando retrocesso, pilhas de recursão e explosão exponencial em consultas patológicas.

O autor observa que isso difere fundamentalmente de ferramentas como jq, jmespath ou jsonpath-rust, que interpretam expressões de caminho, avaliam consultas em cada nó, verificam predicados e descem recursivamente—potencialmente revisitando subárvores ou mantendo listas de trabalho com consultas de descida recursiva.

Instalação e Disponibilidade

Instale do crates.io: cargo install jsongrep. Como ripgrep (que inspirou o projeto), jsongrep é multiplataforma com binários disponíveis e escrito em Rust.

A ferramenta detecta se a saída é canalizada para comandos como less ou sort e omite caminhos JSON por padrão (substitua com a opção --with-path).

📖 Leia a fonte completa: HN LLM Tools

Ad

👀 See Also

pop-pay MCP server adiciona guardrails de pagamento para agentes Claude Code
Tools

pop-pay MCP server adiciona guardrails de pagamento para agentes Claude Code

pop-pay é um servidor MCP que permite que agentes Claude Code realizem compras sem expor números de cartão de crédito. Ele usa injeção CDP para inserir credenciais de cartão virtual diretamente em iframes de pagamento, com Claude recebendo apenas números de confirmação mascarados.

OpenClawRadar
codebase-md: Ferramenta gera automaticamente CLAUDE.md com manutenção de git hook
Tools

codebase-md: Ferramenta gera automaticamente CLAUDE.md com manutenção de git hook

codebase-md v0.1.0 analisa projetos para gerar arquivos CLAUDE.md com detecção de arquitetura, verificações de saúde de dependências e insights do git. Inclui hooks do git para manter a documentação atualizada e suporta outras ferramentas de codificação de IA com arquivos de configuração adicionais.

OpenClawRadar
Sentido: Go SDK para asserções de teste com LLM e extração de texto estruturado
Tools

Sentido: Go SDK para asserções de teste com LLM e extração de texto estruturado

Sense é um SDK Go que utiliza o Claude para duas funções principais: avaliar saídas não determinísticas em testes com asserções em inglês simples, e extrair structs tipadas de textos não estruturados através de reflexão e tool_use forçado.

OpenClawRadar
Scrapling integrado como a espinha dorsal de raspagem do OpenClaw
Tools

Scrapling integrado como a espinha dorsal de raspagem do OpenClaw

Scrapling, uma biblioteca de código aberto que aprende a estrutura da página e se adapta a mudanças, foi integrada ao OpenClaw como seu mecanismo de scraping central. É 774x mais rápido que BeautifulSoup com Lxml e suporta múltiplos tipos de seletores com sessões assíncronas.

OpenClawRadar