无法使用jq-in-shell脚本获取JSON数组值

无法使用jq-in-shell脚本获取JSON数组值,json,linux,shell,jq,Json,Linux,Shell,Jq,我正在尝试从以下JSON文件获取密钥: 我刚刚执行了下面的命令,它将给出下面的JSON输出 命令: jq -r '.issues' "issues": [ { "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields", "id": "1999875", "self": "https://amazon.kindle.com/jira/rest/ap

我正在尝试从以下JSON文件获取密钥:

我刚刚执行了下面的命令,它将给出下面的JSON输出

命令:

jq -r '.issues'
"issues": [
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "1999875",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/1999875",
      "key": "KINDLEAMZ-67578"
    },
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "2019428",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/2019428",
      "key": "KINDLEAMZ-68661"
    },
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "2010958",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/2010958",
      "key": "KINDLEAMZ-68167"
    }
  ]
}
{
"JIRA-1":"KINDLEAMZ-67578",

"JIRA-2":"KINDLEAMZ-68661",

"JIRA-3":"KINDLEAMZ-68167"
}
输出:

jq -r '.issues'
"issues": [
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "1999875",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/1999875",
      "key": "KINDLEAMZ-67578"
    },
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "2019428",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/2019428",
      "key": "KINDLEAMZ-68661"
    },
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "2010958",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/2010958",
      "key": "KINDLEAMZ-68167"
    }
  ]
}
{
"JIRA-1":"KINDLEAMZ-67578",

"JIRA-2":"KINDLEAMZ-68661",

"JIRA-3":"KINDLEAMZ-68167"
}
我只想得到以下格式的输出,不知道如何得到它

预期输出:

jq -r '.issues'
"issues": [
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "1999875",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/1999875",
      "key": "KINDLEAMZ-67578"
    },
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "2019428",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/2019428",
      "key": "KINDLEAMZ-68661"
    },
    {
      "expand": "operations,versionedRepresentations,editmeta,changelog,renderedFields",
      "id": "2010958",
      "self": "https://amazon.kindle.com/jira/rest/api/2/issue/2010958",
      "key": "KINDLEAMZ-68167"
    }
  ]
}
{
"JIRA-1":"KINDLEAMZ-67578",

"JIRA-2":"KINDLEAMZ-68661",

"JIRA-3":"KINDLEAMZ-68167"
}

如何从每个数组中获取键值并如上所示显示?JIRA-n将根据结果增加。

给定一个数组,您可以使用
将数组映射为索引和值的数组。然后,可以使用
reduce
with_entries/1
映射到对象上所需的键和值

reduce (.issues | to_entries[]) as {$key,$value} ({};
    .["JIRA-\($key + 1)"] = $value.key
)


看起来您使用的版本低于1.5。你需要做一些调整,去掉解构

reduce (.issues | to_entries[]) as $e ({};
    .["JIRA-\($e.key + 1)"] = $e.value.key
)

非常感谢你。让我试着接受你的回答。Jeff Mercado-我尝试在shell中运行相同的命令,并得到以下错误错误:语法错误,意外的“{”,期望“$”减少(.issues | to_entries[])为{$key,$value}({};[“JIRA-($key+1)”]=$value.key)^1编译错误你能帮我一下吗?我试过了,但我无法确定出哪里出了问题。我使用的是jq 1.5版。你能验证你是否在1.5版上吗?它应该像写的那样在那里工作,它在解构部分失败
{$key,$value}
是在1.5中添加的。
jq--version
的输出是什么?它可以被重写以使用1.4,而不需要解构。
将(.issues | to_entries[])减少为$e({};[“JIRA-\($e.key+1)]=$e.value.key)
jq——版本输出:1.5vJeff Mercado——很多工藤都是你的……最后它与你的魔法一起发挥作用了……再次感谢你……出于你的考虑,这里还有一个替代方案(即非jq)您问题中的JSON操作解决方案,基于unix
walk path
实用程序jtc:
实际上,我的上述解决方案和提供的解决方案都不能满足您的要求:“JIRA-n将根据结果增加”。因为如果您在中间插入一条不带
标签的记录,则两者都会产生错误的结果。我的解决方案可能会被修复(如果标签
在JSON中是唯一的,则会被简化),如下所示: