Reputation: 345
Let's say I have this JSON file below:
{
"team": {
"money": 100,
},
"group": {
"money": 200,
"snack": true,
}
}
I want to select the objects which has a "snack" key including its parent. The current command I'm using is:
jq '..|objects|select(has("snack"))' json
This however, does not include the parent, which in this case is "group". How do I select the parent of the selected object as well?
Upvotes: 1
Views: 133
Reputation: 116957
Instead of using ..
, you could use paths
. That is, you'd select the paths that lead to the items of interest, and work from there. So you'd start with:
paths(objects) as $p
| select(getpath($p)|has("snack"))
| $p
For the given input (after having been corrected), this would yield:
["group"]
So you might want to replace the $p
in the last line by $p[-1]
, but it's not altogether clear how useful that would be. More useful would be getpath( $p[:-1] )
Upvotes: 2