首页 > 解决方案 > Chef - Ruby - 如何从嵌套数组/列表中提取值

问题描述

我正在使用这个 json 内容(我愿意接受关于更好格式的建议):

{"forwardingZones": [{"name": "corp.mycompany.com","dnsServers": ["192.168.0.1","192.168.0.2"]}]}

注意:当我们向外扩展时,我们可能会在此列表中添加更多项目,包括更多 IP 和更多名称,因此下面代码末尾的“join(',')”。

我试图遍历它以获得这个结果:

corp.mycompany.com=192.168.0.1;192.168.0.2

使用此代码:

forward_zones = node['DNS']['forward_zones'].each do |forwarded_zone|
forwarded_zone_name = forwarded_zone['name']
forwarded_zone_dns_servers = forwarded_zone['dns_servers'].join(';')
"#{forwarded_zone_name}=#{forwarded_zone_dns_servers}"
end.join(',')

这是我得到的结果:

{"dnsServers"=>["192.168.0.1", "192.168.0.2"], "name"=>"corp.mycompany.com"}

我究竟做错了什么...?

标签: arraysrubychef-infra

解决方案


x.each返回x。你想要x.map


推荐阅读