I am having trouble deleting all empty arrays from a JSON file with jq.
I've tried:
walk(if type == "array" then map(select(length > 0)) else . end)
which removes empty strings, but the arrays stay in the document. Is there a way to remove the arrays completely? Thank you for your support.
CodePudding user response:
You could walk through using .., select everything that is an empty array [] and set it to empty
(.. | select(. == [])) |= empty
Edit:
In this comment, oguz ismail uses del() instead of |= empty which is the preferred approach if the empty arrays to be deleted may be located not only in an object {"a":[]} but also in a superordinate array ([[]]).
del(.. | select(. == []))
