在JSON哈希格式和实际哈希格式之间进行转换的最优雅方法是什么?在红宝石?

时间:2012-02-27 20:15:50

标签: ruby json

这是我所面对的哈希(尽管原来我发送的部分指向一个数组):

{"sections" => {
 "0" => {},
 "1" => {}
}}

应该是

{"sections" => [
 {},
 {}
]}

理想情况下,我想扩展Hash类......但是我的大脑现在已经变成了一团糟。

感谢。

这是我目前的进展:

 def un_json
    self.each do |k, v|
      if v.is_a?(Hash) and k.is_a?(Number)
        # iterate over k's objects, then remove k from self
      end
    end
  end

3 个答案:

答案 0 :(得分:2)

使用ruby标准库json。

require 'json'

j = '{"sections": {
       "0": {},
       "1": {}
     }}'

p JSON.parse(j)

# {"sections"=>{"0"=>{}, "1"=>{}}}

答案 1 :(得分:1)

array = []
hash['sections'].each do |i,val|
  array[i.to_i] = val
end
hash['sections'] = array

答案 2 :(得分:0)

这是一种快速而又肮脏的方式:

h = {"sections" => {
                     "0" => {},
                     "1" => {}
                   }}
result={}
h.each do |k,v|
  result[k]=v.values
end

result.to_json

返回:

"{\"sections\":[{},{}]}"