gpt4 book ai didi

bash - 在循环中使用 jq 将 json 对象作为 json 数组文件中的 POST 数据

转载 作者:行者123 更新时间:2023-12-01 01:17:22 25 4
gpt4 key购买 nike

这是我的示例 test.json 文件

[
{
"description": "Some description",
"name": "Some name",
"summary": "Some summary. "
},
{
"description": "Some description",
"name": "Some name",
"summary": "Some summary. "
},
{
"description": "Some description",
"name": "Some name",
"summary": "Some summary. "
}
]

这是 bash 脚本

declare -A values=( )
while IFS= read -r value; do
echo "Read $value" >&2
#echo $value | curl -d @- -H "Content-Type: application/json" https://example.com/api/foo
done < <(jq -r '.[]' <$1)

这是我得到的输出

Read {
Read "description": "Some description",
Read "name": "Some name",
Read "summary": "Some summary. "
Read }
Read {
Read "description": "Some description",
Read "name": "Some name",
Read "summary": "Some summary. "
Read }
Read {
Read "description": "Some description",
Read "name": "Some name",
Read "summary": "Some summary. "
Read }

我想使用文件中的 JSON 对象,使用 curl 将数据发布到 API。我希望循环运行 3 次。

如何获取整个 JSON 对象(导致循环运行 3 次)而不是从 test.json 文件中输出每一行?

最佳答案

使用 jq -c,在单独的行上发出每个结果。当您的预期输出是 JSON 而不是原始字符串时,不要使用-r

我还在下面添加了一些您的代码中缺少的引号:

# for readability, factored out
args=( -d @- -H "Content-Type: application/json" )

while IFS= read -r value; do
echo "Read $value" >&2
curl "${args[@]}" https://example.com/api/foo <<<"$value"
done < <(jq -c '.[]' <"$1")

关于bash - 在循环中使用 jq 将 json 对象作为 json 数组文件中的 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50458773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com