【问题标题】:how to use jq to filter an object based on it's key:value pair?如何使用 jq 根据对象的键:值对过滤对象?
【发布时间】:2021-08-23 08:53:09
【问题描述】:

假设这是输入

>echo '{"A": {"x": 1}, "B": {"x":2}, "C":{"x":3}}' | jq '.'
{
  "A": {
    "x": 1
  },
  "B": {
    "x": 2
  },
  "C": {
    "x": 3
  }
}

我想得到"x" == 2的返回对象。 我知道如何实现这一目标的唯一方法就是通过这个

>echo '{"A": {"x": 1}, "B": {"x":2}, "C":{"x":3}}' | jq '.[] | select(.x==2)'
{
  "x": 2
}

有没有办法让 jq 像这样返回我?

{
  "B": {
    "x": 2
  },
}

 

【问题讨论】:

    标签: json filter jq


    【解决方案1】:

    你也可以使用 map_values :

    map_values(select(.x == 2))
    

    【讨论】:

      【解决方案2】:
      with_entries(select(.value.x == 2))
      

      【讨论】:

      • 谢谢。我也找到了相同的答案:) >echo '{"A": {"x": 3}, "B": {"x":2}, "C":{"x":3}}' | jq 'to_entries |.[] | select(.value.x==3) | [.] | from_entries'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 2016-10-06
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      • 2021-05-04
      相关资源
      最近更新 更多