我如何在 jq 中使用变量?(MacOS,shell)
how can i use variable in jq?(MacOS,shell)
我得到一个 Json 字符串作为:
{
"id": 3397,
"title": "title_1"
}
{
"id": 3396,
"title": "title_2"
}
我想做的是让每个 id
循环,
我使用以下代码:
for (( i = 0; i < requestCount; i++ )); do
requestId=$(echo $jsonString[$i] | jq '.id')
echo requestId;
done
但是不行,我觉得我使用变量的方式不对,我在这里找不到有用的东西jq。
让 jq 进行迭代。 (也就是说,让 jq 遍历 JSON 个对象的输入流。)例如:
$ jq .id <<< "$json" | while read id ; do echo "hello $id"; done
输出:
hello 3397
hello 3396
这样,您就不必知道输入中有多少 JSON 个对象。您可能想使用 "read -r" 或 "IFS= read -r".
备选方案丑陋且效率低下,例如:
$ for ((i=0;i<2;i++)) ; do jq -s --argjson i "$i" '.[$i].id' <<< "$json" ; done
我得到一个 Json 字符串作为:
{
"id": 3397,
"title": "title_1"
}
{
"id": 3396,
"title": "title_2"
}
我想做的是让每个 id
循环,
我使用以下代码:
for (( i = 0; i < requestCount; i++ )); do
requestId=$(echo $jsonString[$i] | jq '.id')
echo requestId;
done
但是不行,我觉得我使用变量的方式不对,我在这里找不到有用的东西jq。
让 jq 进行迭代。 (也就是说,让 jq 遍历 JSON 个对象的输入流。)例如:
$ jq .id <<< "$json" | while read id ; do echo "hello $id"; done
输出:
hello 3397
hello 3396
这样,您就不必知道输入中有多少 JSON 个对象。您可能想使用 "read -r" 或 "IFS= read -r".
备选方案丑陋且效率低下,例如:
$ for ((i=0;i<2;i++)) ; do jq -s --argjson i "$i" '.[$i].id' <<< "$json" ; done