cURL这个JSON有更好的解决方案吗?

时间:2018-03-13 03:43:09

标签: json bash for-loop curl jq

我有这个函数使用curljq作为JSON处理器迭代给定JSON的键,我的代码如下所示:(bash)

function getJSONContent {
  option=""

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

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

这样做好吗?或者在Bash / Shellscript中有更好的解决方案吗?

注意:在您回答我的问题之前,请尝试对我的问题进行更改,以便更好地获得更好的答案,谢谢

1 个答案:

答案 0 :(得分:2)

  

是否有更好的解决方案......?

是!

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

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

  3. 在这种特殊情况下,您可以通过简单地使用jq'','来避免多次调用jq。操作

  4. 简而言之,尝试以下几点:

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