有没有更好的解决方案来 cURL 这个 JSON



我有这个函数,它使用 curljq 作为 JSON 处理器迭代给定 JSON 的键,我的代码看起来像这样:(bash(

function getJSONContent {
  option=""
  for option in "header" "developer" "category" "description"
  do
    content=$(curl -s $extension_url | jq ".["$extension"]["$option"]")
    printf "$contentn"
  done
}

但问题是它卷曲了 4 次,我没有找到更好的解决方案而不会出错。

这样做可以吗?还是在Bash/Shellscript中有一个更好的解决方案来做到这一点?

有没有更好的解决方案...?

是的!

  1. 您显然只需要一次调用 curl 和一次调用 jq,但在至少,您应该避免多次调用 curl。

  2. 避免"动态"构造 jq 命令。 相反,您可以传入 shell(或环境(变量在命令行上,例如使用 --arg 或 --argjson

  3. 在这种特定情况下,看起来您可以通过简单地使用 jq 的 '","' 运算符来避免多次调用 jq。

简而言之,尝试以下方法:

 curl -s "$extension_url" |
   jq --arg extension "$extension" '
     .[$extension]["header","developer","category","description"]'

最新更新