Как преобразовать массив json в массив строк bash с помощью jq?
как разобрать массив объектов json в массив bash с этими объектами в виде строк?
Я пытаюсь сделать следующее:
CONVO=$(get_json_array | jq '.[]')
for CONVERSATION in $CONVERSATIONS
do
echo "${CONVERSATION}"
done
но эхо выводит строки вместо конкретных объектов. Формат объекта:
{ "key1":"value1", "key2": "value2"}
и мне нужно передать его в API:
api_call '{ "key1":"value1", "key2": "value2"}'
1 ответов
проблема в том, что jq
по-прежнему просто выводит строки текста;вы не можете обязательно сохранять каждый элемент массива как одну единицу. Тем не менее, пока новая строка не является допустимым символом в любом объекте, вы все равно можете выводить каждый объект в отдельной строке.
get_json_array | jq -c '.[]' | while read object; do
api_call "$object"
done
конечно, при этом предположении вы можете использовать на bash
4 для построения массива:
readarray -t conversations < <(get_son_array | jq -c '.[]')
for conversion in "${conversations[@]}"; do
api_call "$conversation"
done