一尘不染

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

json

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

阅读 224

收藏
2020-07-27

共1个答案

一尘不染

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

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

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

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