Você pode usar jq
para processar arquivos json no shell.
Por exemplo, salvei seu arquivo json de amostra como raul.json
e, em seguida, executei:
$ jq .message.temperature raul.json
409.5
25.1
409.5
$ jq .message.humidity raul.json
null
40
null
jq está disponível pré-empacotado para a maioria das distribuições linux.
Provavelmente, existe uma maneira de fazer isso em jq
, mas a maneira mais simples que encontrei para obter os dois valores desejados em uma linha é usar xargs
. Por exemplo:
$ jq 'select(.message.id == 1490) | .message.temperature, .message.humidity' raul.json | xargs
25.1 40
ou, se você quiser percorrer cada instância de .message.id
, podemos adicionar .message.id
à saída e usar xargs -n 3
, pois sabemos que haverá três campos (id, temperatura, umidade):
jq '.message.id, .message.temperature, .message.humidity' raul.json | xargs -n 3
4095 409.5 null
1490 25.1 40
2039 409.5 null
Você pode pós-processar essa saída com o awk ou o que for.
Finalmente, tanto o python quanto o perl possuem excelentes bibliotecas para analisar e manipular os dados do json. Assim como várias outras linguagens, incluindo php e java.