jq - select objects with given key name
jq, json
Solution
In 1.4 you can just:
jq '..|.updateDate?'
If you're stuck with 1.3 you can use a longer program like so:
jq 'recurse(if type == "array" or type = "object" then .[] else empty end) | if type == "object" then .updateDate else empty end'
Problem
I've got an arbitrary structure with many levels, etc. I need to select all objects that contain a key named `updateDate`. How do I do that with jq? I came up with one way but it also produces errors on invalid data types when it visits a leaf which I have to grep out: ``` jq 'recurse(.[]) | has("updateDate")' | grep -Fv error ``` I don't really understand how to also check for types or leaves and I suspect there is a simpler way to achieve what I want?