【发布时间】:2018-11-24 16:02:47
【问题描述】:
这里是 jq 新手,正在努力解决以下问题:
我有以下 json,需要根据关键字过滤键并打印出整个对象(不仅仅是键)或某些键/值对。注意 JSON 的嵌套对象结构,这是有意的。
{
"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
}
我尝试过的事情:
我可以打印出键名,但不知道如何访问整个对象。
cat timers.json| jq '.timers | keys[] | select(contains("KeywordA")) '
【问题讨论】:
-
输入 json 无效:不能重复
timerWithAKeywordA键 -
.timers 应该是一个对象数组吗?您希望输出是有效的 JSON 吗?
-
@RomanPerekhrest 谢谢,这是一个手动构建的示例,我忽略了键名的唯一性约束。更新了描述以反映这一点。
-
@peak 这是我正在使用的 json 的近似结构。
timers只是包含各种计时器对象的对象之一。 -
我的答案已相应更新。