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.