GNU/Linux >> Linux Esercitazione >  >> Linux

Analizzare un campo da un array Json in un array Bash?

Ho un output JSON che contiene un elenco di oggetti archiviati in una variabile. (Potrei non esprimermi correttamente)

[
  {
    "item1": "value1",
    "item2": "value2",
    "sub items": [
      {
        "subitem": "subvalue"
      }
    ]
  },
  {
    "item1": "value1_2",
    "item2": "value2_2",
    "sub items_2": [
      {
        "subitem_2": "subvalue_2"
      }
    ]
  }
]

Ho bisogno di tutti i valori per item2 in un array per eseguire uno script bash su Ubuntu 14.04.1.

Ho trovato un sacco di modi per ottenere l'intero risultato in un array ma non solo gli elementi di cui ho bisogno

Risposta accettata:

Usando jq :

$ cat json
[
  {
    "item1": "value1",
    "item2": "value2",
    "sub items": [
      {
        "subitem": "subvalue"
      }
    ]
  },
  {
    "item1": "value1_2",
    "item2": "value2_2",
    "sub items_2": [
      {
        "subitem_2": "subvalue_2"
      }
    ]
  }
]

CODICE:

arr=( $(jq -r '.[].item2' json) )
printf '%sn' "${arr[@]}"

USCITA:

value2
value2_2

Linux
  1. Bash array di array?

  2. Migra da Parse a Rackspace

  3. Esegue lo script bash dall'URL

  4. convertire l'output di bash `ls` in un array json

  5. Utilizzo di jq per recuperare il valore della chiave dall'output json

Bash break:come uscire da un loop

Matrici Bash

Matrice associativa in Bash

Bash cattura l'output di awk nell'array

bash:inserisci i file di elenco in una variabile e ma la dimensione dell'array è 1

Converti una stringa di testo in bash in array