【发布时间】:2019-03-28 15:28:53
【问题描述】:
我正在使用 ELK Stack Logstash,这是我现在需要转换的“目标”数据字段的格式:
{
"target": [
"Sector1 - Subsector1",
"Sector2 - Subsector2"
]
}
我需要的 JSON 输出格式:
{
"target": [{
"Sector": "Sector1",
"Subsector": "Subsector1"
}, {
"Sector": "Sector2",
"Subsector": "Subsector2"
}]
}
我做了一些研究,发现 Logstash Ruby 过滤器能够执行转换,但是我不精通 Ruby,所以如果这里有任何专业人士可以帮助处理代码,将不胜感激!
【问题讨论】:
-
如果上面是ruby hash 'h',所有内容都是字符串,你可以得到所需的格式,
h['target'] = [h['target'].inject({}) { |m, i| m[i.split(' - ')[0]] = i.split(' - ')[1]; m }] -
@ray:如果上面是 Ruby 哈希,那么您的代码将无法工作 - 您需要
h[:target],而不是h['target']。 :) -
@Amadan 我在评论中提到将所有内容都放在字符串中,因为如果目标是符号,则不能像
'target':那样写,必须使用target:。我使用'target' =>为字符串提供了解决方案
标签: arrays json ruby nested logstash