簡體   English   中英

在Ruby中將數組轉換為JSON(Puppet,Facter)

[英]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_jsonwinusersa.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM