arrays - 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"}
我究竟做错了什么...?
解决方案
x.each
返回x
。你想要x.map
。
推荐阅读
- reactjs - 我正在尝试将多个文件打包到一个数组中,但一次只显示一个
- excel - 基于序列的函数,用于替换另一个工作表中的序列
- python - 使用 beautifulsoup 抓取链接页面
- c++ - 我应该总是在 __builtin_return_address 之后使用 __builtin_extract_return_addr
- c# - LINQ except() 的意外行为
- latex - 使用 Pandoc 文本到单词
- java - Spring boot post在db中写入空值
- azure - 如何检查密钥库中是否存在具有给定名称的密钥?
- c - 使用结构的 c 中的函数
- flutter - 谷歌有可能屏蔽华为手机上的所有 Flutter 应用吗