jq-返回普通列表而不是json数组

jq-返回普通列表而不是json数组,json,jq,Json,Jq,下面的示例返回此示例JSON的普通列表,而不是JSON数组 { "items": [ { "id": 1, "name": "one" }, { "id": 2, "name": "two" }, { "id": 3, &q

下面的示例返回此示例JSON的普通列表,而不是JSON数组

{
  "items": [
    {
      "id": 1,
      "name": "one"
    },
    {
      "id": 2,
      "name": "two"
    },
    {
      "id": 3,
      "name": "tre"
    }
  ]
}
这是我想要的输出:

[1,2,3]
但我明白了

1
2
3


演示:

为什么要不厌其烦地对这样一个简单的过滤器采取迂回的方法?你所需要的就是在下面。
-c/--compact output
标志将把输出放在一行中

jq -c '[.items[].id]'

要从粘贴的链接中解密您的筛选器,
[.items[]][
将把
.items
的内容放入一个数组中,并从中取回。然后,
[.id,.name]
将创建多个数组,其中第0个元素为
.id
值,
[0]
将仅获取id值,而不将其放入数组中。这种方法对我来说毫无意义


除了OP之外,注释中还有一个帖子,用于从下面的每个数组中获取第一个元素

["1", "2", "3"]
["4", "5", "6"]
["7", "8", "9"]
可以这样做

jq -cn '[inputs] | map(first)'

为什么要不厌其烦地对如此简单的过滤器采取迂回的方法?你所需要的就是在下面。
-c/--compact output
标志将把输出放在一行中

jq -c '[.items[].id]'

要从粘贴的链接中解密您的筛选器,
[.items[]][
将把
.items
的内容放入一个数组中,并从中取回。然后,
[.id,.name]
将创建多个数组,其中第0个元素为
.id
值,
[0]
将仅获取id值,而不将其放入数组中。这种方法对我来说毫无意义


除了OP之外,注释中还有一个帖子,用于从下面的每个数组中获取第一个元素

["1", "2", "3"]
["4", "5", "6"]
["7", "8", "9"]
可以这样做

jq -cn '[inputs] | map(first)'

谢谢您提供的详细信息。我想,为了在这里发表文章,我试图简化我的例子,但我没有抓住我想表达的要点(因此,一些简单的东西变得过于复杂),谢谢你提供的细节。我认为,为了在这里发布,我试图简化我的示例,但我忽略了我试图提出的要点(因此,一些简单的问题变得过于复杂),总体而言,答案是有帮助的,但我的输入实际上来自另一个jq查询,我希望将[“1”、“4”、“7”]作为输出。我试图不更改原始查询,因为我试图验证其输出。我第一次发布时应该更清楚。谢谢该示例返回[1,2,3],我正在寻找[1,4,7]:)感谢您的帮助参见answerAnswer更新整体帮助,但我的输入实际上来自另一个jq查询,我希望将[“1”、“4”、“7”作为输出。我试图不更改原始查询,因为我试图验证其输出。我第一次发布时应该更清楚。谢谢该示例返回[1,2,3],我正在寻找[1,4,7]:)感谢您的帮助参见答案更新