使用ruby在logstash中循环遍历嵌套的json

时间:2017-02-15 13:50:37

标签: json ruby logstash

我的数据是深度嵌套的JSON,我需要索引某些字段的总和。作为Ruby的新手,我尝试了以下(使用 #i 的一些变体),但它只抛出_rubyexception:

ruby { code => '
 i = 0
 sum = 0
 while i < event.get( "[foo][bar][faz]" ).length do
  sum += event.get( "[foo][bar][faz][#i][[baz]]" )
  i += 1
 end
 event.set( "sum", sum )
'
}

我应该如何正确地遍历嵌套字段以获得总和?

e.g。这有效:

ruby { code => '
  event.set( "sum", event.get( "[foo][bar][faz][0][[baz]]" ) + event.get( "[foo][bar][faz][1][[baz]]" ) )
 '
}

但实际的事件数量各不相同。

1 个答案:

答案 0 :(得分:0)

我找到了一个问题的解决方案:

ruby { code => '
  i = 0
  sum = 0
  while i < event.get( "[foo][bar][faz]" ).length do
   sum += event.get( "[foo][bar][faz][" + i.to_s + "][[baz]]" )
   i += 1
  end
  event.set( "sum", sum ) 
 '
}