将JSON字符串转换为Bash中的数组

时间:2018-12-31 12:05:13

标签: linux bash asp.net-web-api

具有卷曲功能的Am从Webapi中获取数据。 Web API返回格式为["Name1","Name2","Name3","Name4","Name5"]的Json字符串。我需要将数据提取到bash脚本中的数组中,以便可以使用“名称”在其余代码中循环。 我要求的格式类似于arr[0]=Name1 ,...., arr[n]=Namen

1 个答案:

答案 0 :(得分:1)

对于没有换行符的元素,您可以执行以下操作:

$ readarray -t arr < <(jq -r  '.[]' <<< '["Name1","Name2"]')
$ declare -p arr
declare -a arr=([0]="Name1" [1]="Name2")

阅读此jq request for NUL-delimited output,这也将使元素带有换行符:

while IFS= read -rd '' item; do
    arr+=("$item")
done < <(jq -j  '.[]|(. + "\u0000")' <<< '["Name1","Na\nme2"]')

# with bash 4.4 or later
$ readarray -d '' arr < <(jq -j  '.[]|(. + "\u0000")' <<< '["Name1","Na\nme2"]')

$ declare -p arr
declare -a arr=([0]="Name1" [1]=$'Na\nme2')