How do I parse a json array of objects to a bash array with those objects as strings?
I am trying to do the following:
CONVO=$(get_json_array | jq '.[]') for CONVERSATION in $CONVERSATIONS do echo "${CONVERSATION}" done
But the echo prints out lines instead of the specific objects. The format of the object is:
{ "key1":"value1", "key2": "value2"}
and I need to pass it to an api:
api_call '{ "key1":"value1", "key2": "value2"}'
The problem is that jq
is still just outputting lines of text; you can't necessarily preserve each array element as a single unit. That said, as long as a newline is not a valid character in any object, you can still output each object on a separate line.
get_json_array | jq -c '.[]' | while read object; do api_call "$object" done
Of course, under that assumption, you could use the readarray
command in bash
4 to build an array:
readarray -t conversations < <(get_son_array | jq -c '.[]') for conversion in "${conversations[@]}"; do api_call "$conversation" done