del PO in realtà descrive gli oggetti, contro gli array.
Per essere sicuri che aiutiamo altre persone che arrivano che sono effettivamente in cerca di aiuto con gli array JSON, tuttavia, vale la pena coprirli esplicitamente.
Per il caso di sicurezza-ish in cui le stringhe non possono contenere ritorni a capo (e quando bash 4.0 o più recente è in uso), questo funziona:
str='["Hello world", "bla bla bla Mr. Freeman"]'
readarray -t array <<<"$(jq -r '.[]' <<<"$str")"
per supportare le versioni precedenti di bash, e stringhe con a capo, abbiamo un po 'più elaborato, utilizzando un flusso NUL delimitato per leggere da jq
:
str='["Hello world", "bla bla bla Mr. Freeman", "this is\ntwo lines"]'
array=()
while IFS= read -r -d '' line; do
array+=("$line")
done < <(jq -j '.[] | (. + "\u0000")')
fonte
2016-11-14 18:42:58
cerco usare 'JQ -r' .param_name'' , ma il suo lavoro solo se ci conosci il nome del parametro – Evgenii
Se il tuo script riceve JSON arbitrario, ciò potrebbe essere impossibile da fare in puro bash. – helpermethod