Existe algum tipo de linguagem de consulta ...
jq define um J SON q linguagem uery que é muito semelhante ao JSONPath - ver https://github.com/stedolan/jq/wiki/For-JSONPath-users
... [qual] eu posso usar para encontrar um item em [0]. objetos em que id = 3?
Assumirei o seguinte: encontre todos os objetos JSON sob a chave especificada com id == 3, não importa onde o objeto possa estar. Uma consulta jq correspondente seria:
.[0].objects | .. | objects | select(.id==3)
onde "|" é o operador de pipe (como no comando shell pipes) e onde o segmento ".. | objetos" corresponde a "não importa onde o objeto possa estar".
O básico do jq é bastante óbvio ou intuitivo ou, pelo menos, bastante simples, e o resto é fácil de entender, se você estiver familiarizado com os pipes do shell de comando. A FAQ do jq possui indicadores para tutoriais e similares.
O jq também é como o SQL, pois suporta operações CRUD, embora o processador jq nunca substitua sua entrada. O jq também pode manipular fluxos de entidades JSON.
Dois outros critérios que você pode considerar na avaliação de uma linguagem de consulta orientada a JSON são:
- suporta expressões regulares? (o jq 1.5 possui suporte abrangente para regex PCRE)
- é Turing completo? (Sim)