【问题标题】:JQ: How to turn output of array selector back into an array? [duplicate]JQ:如何将数组选择器的输出转回数组? [复制]
【发布时间】:2020-09-08 21:43:03
【问题描述】:

我正在使用带有 jq 的 select 函数来解析列表中包含特定值的项目。我希望结果输出是一个 json 列表,但 jq 分别给了我对象:

例子:

$ a='{                                                                                   
  "FOO": {                                                                                    
    "name": "Donald",
    "location": "Stockholm"
  },
  "BAR": {
    "name": "Walt",
    "location": "Stockholm"
  },
  "BAZ": {
    "name": "Jack",
    "location": "Whereever"
  }
}'

$ echo $a | jq '.[] | select(.location=="Stockholm")' 
{
  "name": "Donald",
  "location": "Stockholm"
}
{
  "name": "Walt",
  "location": "Stockholm"
}

相反,我希望输出是这样的 json 列表:

[  
  {
    "name": "Donald",
    "location": "Stockholm"
  },
  {
    "name": "Walt",
    "location": "Stockholm"
  }
]

我怎样才能用 jq 做到这一点?

【问题讨论】:

标签: arrays json jq


【解决方案1】:

通常,您可以在任何表达式周围加上方括号,以将其所有输出收集到一个数组中。

[.[] | select(.location=="Stockholm")]

有时不首先分解输入数组是有意义的,而是使用 map 对其进行转换:

map(select(.location=="Stockholm"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多