我从控制台生成了一个json文件,并希望对其进行解析,以便查看在哪个版本和哪个操作系统上运行了多少节点。
json示例:
[
{
"facts.aio_agent_version": "7.9.0",
"facts.operatingsystem": "windows"
},
{
"facts.aio_agent_version": "7.8.0",
"facts.operatingsystem": "windows"
},
{
"facts.aio_agent_version": "7.9.0",
"facts.operatingsystem": "CentOS"
},
{
"facts.aio_agent_version": "7.9.0",
"facts.operatingsystem": "CentOS"
},
{
"facts.aio_agent_version": "7.8.0",
"facts.operatingsystem": "CentOS"
}
]
我需要一个ruby哈希的输出:
{"CentOS"=>"7.8.0"=>"nodes"=> 1, "CentOS"=>"7.9.0"=>"nodes"=> 2, "windows"=>"7.8.0"=>"nodes"=> 1, "windows"=>"7.9.0"=>"nodes"=> 1}
这是我所能做到的:
require 'json'
file = File.read('./data.json')
hash = JSON.parse(file)
hash2 = {}
hash.each { |key|
if !hash2.key?(key["facts.operatingsystem"]=>key["facts.aio_agent_version"])
hash2[key["facts.operatingsystem"]] = key["facts.aio_agent_version"] = "node"
else
hash2[key["facts.operatingsystem"]["facts.aio_agent_version"]["node"]] =+ 1
end
}
puts hash2
输出:
{"windows"=>"node", "CentOS"=>"node"}
1条答案
按热度按时间ndh0cuux1#
对于数组中的每一个散列,我们都会深入查看结果散列,以确定之前是否看到了一个节点。如果我们这样做了,我们会增加计数。如果没有,则在结果哈希中创建节点。由于操作系统可以有多个版本,我们将现有节点与新创建的节点合并。