Este dilema se puede resolver de variadas maneras, pero te mostramos la resolución más completa en nuestra opinión.
Solución:
Puedes usar jq
para procesar archivos json en shell.
Por ejemplo, guardé su archivo json de muestra como raul.json
y luego corrió:
$ jq .message.temperature raul.json
409.5
25.1
409.5
$ jq .message.humidity raul.json
null
40
null
jq está disponible preempaquetado para la mayoría de las distribuciones de Linux.
Probablemente hay una manera de hacerlo en jq
en sí mismo, pero la forma más sencilla que encontré para obtener ambos valores deseados en una línea es usar xargs
. Por ejemplo:
$ jq 'select(.message.id == 1490) | .message.temperature, .message.humidity' raul.json | xargs
25.1 40
o, si desea recorrer cada uno .message.id
ejemplo, podemos agregar .message.id
a la salida y uso xargs -n 3
como sabemos que habrá tres campos (id, temperatura, humedad):
jq '.message.id, .message.temperature, .message.humidity' raul.json | xargs -n 3
4095 409.5 null
1490 25.1 40
2039 409.5 null
Luego podría procesar esa salida con awk o lo que sea.
Finalmente, tanto python como perl tienen excelentes bibliotecas para analizar y manipular datos json. Al igual que varios otros lenguajes, incluidos php y java.
Aquí puedes ver las comentarios y valoraciones de los usuarios
Recuerda algo, que tienes la opción de añadir una evaluación acertada .