[英]Converting array to json in Ruby (Puppet, facter)
我正在用Ruby为Puppet编写事实。 我有一个数组
array = [[["User", "Username"], ["Date", "16.12.2014"]], [["User1", "Username1"], ["Date1", "17.12.2014"]]]
我想将其转换为json。 我尝试先将其转换为哈希,但在Linux中这样做
array.each do |userarr|
winusers = Hash[userarr.map! { |pair| [pair[0], pair[1]] } ]
end
我只转换了这对[["User1", "Username1"], ["Date1", "17.12.2014"]]
对。 这样做:
array.each do |userarr|
winusers = Hash[userarr.map! { |pair| [pair[0], pair[1]] } ]
winusersa << winusers
end
我得到了一系列的哈希。 在Linux winusersa.to_json
其winusersa.to_json
到json winusersa.to_json
上,我得到了json格式的文本数组,在Puppet(实际上是事实)上,我只转换了第一对。 为什么在Puppet中实际上不起作用? 如何转换该数组以使所有对格式正确?
试试这个
array.flatten(1).each_slice(2).map(&:to_h)
=> [{"User"=>"Username", "Date"=>"16.12.2014"}, {"User1"=>"Username1", "Date1"=>"17.12.2014"}]
然后,作为哈希,您可以轻松地调用to_json
需要'facter'#如果您有要把它作为gem进行本地测试的地方,则需要'json'
array = [
[
["User", "Username"],
["Date", "16.12.2014"]
],
[
["User1", "Username1"],
["Date1", "17.12.2014"]
]
]
put JSON.pretty_generate(JSON.parse(array.to_json))
您已经以ruby Hash#[]
方法可以使用的形式获取了Array。 我认为您需要的是:
% pry
[1] pry(main)> require 'json'
[2] pry(main)> a = [[["User", "Username"], ["Date", "16.12.2014"]], [["User1", "Username1"], ["Date1", "17.12.2014"]]]
[3] pry(main)> puts JSON.pretty_generate(a.map { |e| Hash[e] })
[
{
"User": "Username",
"Date": "16.12.2014"
},
{
"User1": "Username1",
"Date1": "17.12.2014"
}
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.