如果我在bash脚本中有一个json字符串,我该如何将其转换为数组?
{ "name": "foo", "id": "123" } { "name": "bar", "id": "456" }
我想要的是提示w /名称,并告诉我需要使用的ID(变量)。
类似
pick your poison:
1) foo
2) bar
#?
如果我选择1,那么id 123
将进入变量X,否则如果我选择2,那么id 456
将进入变量X
答案 0 :(得分:5)
更好的方法之一是将相关数据读入关联数组 - 这里使用jq进行解析。
declare -A data=( )
while IFS= read -r id name; do
data[$id]=$name
done < <(jq -r '@text "\(.id) \(.name)"' <<<"$json_string")
鉴于此,您可以处理您的菜单:
echo "Pick your poison:"
for id in "${!data[@]}"; do
name=${data[$id]}
printf '%d) %s\n' "$id" "$name"
done
read -p '#?' selection
echo "User selected ${data[$selection]}"