将 JSON 数组转换为 bash 字符串数组

Convert a JSON array to a bash array of strings

如何将 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"}'

问题是jq仍然只是输出文本行; 您不必将每个数组元素作为一个单元来保存。也就是说,只要换行符在任何对象中都不是有效字符, 您仍然可以在单独的行上输出每个对象。

get_json_array | jq -c '.[]' | while read object; do
    api_call "$object"
done

在这种假设下,您可以使用 bash 4 中的 readarray 命令来构建一个数组:

readarray -t conversations < <(get_json_array | jq -c '.[]')
for conversation in "${conversations[@]}"; do
    api_call "$conversation"
done