如何按名称过滤键,然后使用jq访问嵌套对象

时间:2018-06-14 19:50:24

标签: json filter key jq

新手jq用户在这里挣扎着:

我有以下json,需要根据关键字过滤键并打印出整个对象(不仅仅是键)或某些键/值对。请注意JSON的嵌套对象结构,这是有意的。

QFontMetrics::width(QChar)

期望的输出:

{
  "timers": {
    "timerWithAKeywordAPlusBlah": {
      "count": 1,
      "max": 0,
      "min": 0      
    },
    "timerWithAKeywordB": {
      "count": 2,
      "max": 0
    },
    "timerWithAKeywordAPlusBlahBlah": {
      "count": 2385,
      "max": 2,
      "min": 1         
    }
  }
}

我尝试过的事情:

我可以打印出关键名称,但无法弄清楚如何访问整个对象。

"timerWithAKeywordAPlusBlah": {
  "count": 1,
  "max": 0,
  "min": 0
},
"timerWithAKeywordAPlusBlahBlah": {
  "count": 2385,
  "max": 2,
  "min": 1
}

1 个答案:

答案 0 :(得分:2)

在此回复中,我将假设您希望输出为有效的JSON。如果您希望输出采用其他形式,您可以简单地使用其他一些过滤器。

无论如何,诀窍是选择对象而不是键,如下所示:

{
  "timerWithAKeywordAPlusBlah": {
    "count": 1,
    "max": 0,
    "min": 0
  },
  "timerWithAKeywordAPlusBlahBlah": {
    "count": 2385,
    "max": 2,
    "min": 1
  }
}

使用(修改的)输入,会产生:

{{1}}

然后,您可以提取最终需要的任何细节。