将 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
如何将 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