当前位置: 首页 > 面试题库 >

无法在Shell脚本中使用jq获取JSON数组值

霍书
2023-03-14
问题内容

我正在尝试从下面的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"
}

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


问题答案:

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

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

https://jqplay.org/s/y6AFKg2dSM

.issues | with_entries({key: "JIRA-\(.key + 1)", value: .value.key})

https://jqplay.org/s/H2uxyFJn9E

似乎您使用的版本小于1.5。您需要进行一些调整并删除解构。

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


 类似资料:
  • 问题内容: 在shell中,我有一个要求,我必须读取以下格式的JSON响应: 在这里,我只关心“ Body”属性值。我做了一些不成功的尝试,例如: 要么 但这还不够。谁能帮我这个? 问题答案: 在命令行上有用于解析json的代码: 访问此以获得jq:https://stedolan.github.io/jq/

  • 问题内容: 因此,我再次制作了一个不错的python程序,它使我的生活变得更加轻松,并节省了大量时间。当然,这涉及一个由virtualenvwrapper功能制成的virtualenv。该项目有一个requests.txt文件,其中包含一些必需的库(也要求:D),如果没有这些库,该程序将无法运行。 我试图添加一个可执行的外壳脚本,该脚本将位于我的路径中(实际上是符号链接)。现在,在此脚本中,我需要

  • 本文向大家介绍Shell脚本数组用法小结,包括了Shell脚本数组用法小结的使用技巧和注意事项,需要的朋友参考一下 array作为一种数据结构,在一些高级语言中都是有直接提供和实现的,当然我shell中也是有的哈。 PS:写这篇文章的原因是B哥在群里发了一个截图: 我大B哥依然是全能型人才哈。。。废话少说,说下正题 1、怎么声明一个数组变量? 直接赋值: declare声明: 小括号空格法: 引号

  • 问题内容: 当前,提到的用于获取MAC地址的所有解决方案始终使用eth0。但是,如果接口不是以eth0开头,该怎么办呢?同样在OS X上,接口名称也不同。 eth0接口也可能存在但未使用。即不活跃,它没有一个IP。 因此,有没有一种方法可以获取第一个可用接口Active的MAC地址(即,它具有一个inet地址,我什至不希望有人拥有inet6)。 例如 注意:我更改了输出值。 因此,在这种情况下,我

  • 问题内容: 我正在尝试将外壳程序脚本中的JSON对象解析为数组。 例如:Amanda,25岁,[http://mywebsite.com] JSON看起来像: 我不想使用任何库,最好是可以使用正则表达式或grep。我已经做好了: 这给了我“名字”:“阿曼达”。我可以为文件中的每一行循环执行此操作,然后将其添加到数组中,但是我只需要右侧而不是整行。 问题答案: 如果您确实无法使用适当的JSON解析器

  • 如何获取密钥名称,如下所示: