Hi
Just because I had troubles to make it work,I decided to share it maybe some other folks can use it some time.
Requirement: Delete all elements in a parsed json log where they are empty
Note: Haproxy sends empty fields as -
, that's why I used eql("-")
so mind changing it if you need
Note: I also delete empty arrays and hashes.
ruby
{
code =>
'
def recursion(event,hashed,path)
hashed.keys.each do |k|
child = hashed["#{k}"]
if (child.is_a?(String) && child.eql?("-")) || (child.is_a?(Array) && child.empty?)
event.remove("#{path}[#{k}]")
elsif child.is_a?(Hash)
if child.empty?
event.remove("#{path}[#{k}]")
else
recursion event, child, "#{path}[#{k}]"
end
end
end
end
begin
recursion event, event.to_hash, ""
end
'
}