如何将对象的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仍然仅输出文本行; 您不必将每个数组元素都保留为一个单元。 就是说,只要换行符在任何对象中都不是有效字符,您仍然可以在单独的行中输出每个对象。
jq
get_json_array | jq -c '.[]' | while read object; do api_call "$object" done
当然,在这种假设下,您可以使用4中的readarray命令bash来构建数组:
readarray
bash
readarray -t conversations < <(get_json_array | jq -c '.[]') for conversion in "${conversations[@]}"; do api_call "$conversation" done