问题描述
|
x = {:name => \"John\",:data => {:physical => {:age => 25,:weight => 150}}}
我希望将数据的子属性上移一个级别(但不必简单地将所有属性展平)。在这种情况下,我实质上想将:physical属性\“ up \”移到一个级别。
我正在尝试
y = x[:data\']
y.each{ |key| x[key] = y[key] }
但是我得到...
x = x.except(:data)
=> {:name=>\"John\",[:physical,{:age=>25,:weight=>150}]=>nil}
我在找 ...
=> {:name=>\"John\",:physical => {:age=>25,:weight=>150}}
解决方法
尝试这个:
x = x.merge(x.delete(:data))
, 我会按照以下方式进行操作:
x = {:name => \"John\",:data => {:physical => {:age => 25,:weight => 150}}}
x[:physical] = x.delete(:data)[:physical]
pp x #=> {:name=>\"John\",:physical=>{:age=>25,:weight=>150}}