我想从Json文件中获取值。哪个在工作
JsonFileToTest
:
{
"permissions": [
{
"emailid": "[email protected]",
"rights": "read"
},
{
"emailid": "[email protected]",
"rights": "read"
}
]
}
readPermissions=($(jq -r '.permissions' JsonFileToTest))
# The command below works perfectly, But when I Put it in a loop, It does not.
#echo ${readPermissions[@]} | jq 'values[].emailid'
for vals in ${readPermissions[@]}
do
# I would like o extract the email id of the user. The loop is not working atm.
echo ${vals[@]} | jq 'values[].emailid'
done
我在这里想念什么?谢谢
如果您really想要这样做,可能看起来像:
readarray -t permissions < <(jq -c '.permissions[]' JsonFileToTest)
for permissionSet in "${permissions[@]}"; do
jq -r '.emailid' <<<"$permissionSet"
done
[请注意,我们告诉jq为每个项目打印一行(使用-c
),并使用readarray -t
将每一行读入一个数组元素(与array=( $(...command...) )
反模式不同,它不仅在换行符上进行拆分,而且同样在其他空白上,并在此过程中扩展了glob)。
但是没有任何理由做任何事情。只需运行即可获得exact相同的结果:
jq -r '.permissions[].emailid' JsonFileToTest