我有一个JSON解码以下散列:红宝石 - 一个数组的改变散列值值
{"person"=>{"user"=>[{"username"=>"foo", "status"=>"Y", "roles"=>["accounting", "sales"]}]}}
我基本上要改变角色值是在像做value.to_sentence一个逗号分隔的句子。我如何实现这一目标?
我有一个JSON解码以下散列:红宝石 - 一个数组的改变散列值值
{"person"=>{"user"=>[{"username"=>"foo", "status"=>"Y", "roles"=>["accounting", "sales"]}]}}
我基本上要改变角色值是在像做value.to_sentence一个逗号分隔的句子。我如何实现这一目标?
尝试这种情况:
def fix_roles(h)
user0 = h['person']['user'][0]
user0['roles'] = user0['roles'].join(', ')
end
[编辑]例如:
h = {"person"=>{"user"=>[{"username"=>"foo", "status"=>"Y", "roles"=>["accounting", "sales"]}]}}
fix_roles(h)
h # => {"person"=>{"user"=>[{"username"=>"foo", "status"=>"Y", "roles"=>"accounting, sales"}]}}
我得到TypeError:无法将字符串转换为整数 – oprogfrogo 2012-02-23 03:43:02
@oprogfrogo:如果你将你的散列复制到一个变量中,说“'h”,并调用“'fix_roles(h)'”,那么你的散列将按照你的描述进行修改。 – maerics 2012-02-23 03:46:09
谢谢你回到我身边。这适用于数组中的第一个元素。如何在有多个元素时更新它。像这样:h = {“person”=> {“user”=> [{“username”=>“foo”,“status”=>“Y”,“roles”=> [“accounting”,“sales” ]},{“username”=>“bar”,“status”=>“Y”,“roles”=> [“customer service”,“sales”]}]}} – oprogfrogo 2012-02-23 18:53:12
由于maerics例如,我能够通过每个数组元素迭代,以实现所述溶液:
def fix_roles(w)
w['person']['user'].each do |arr|
arr.each do |k,v|
arr['roles'] = v.join(', ') if k == 'roles'
end
end
end
你能澄清吗?你想把'[“会计”,“销售”]变成''会计,销售''吗? – Linuxios 2012-02-23 03:05:24
是的,我正在努力。 – oprogfrogo 2012-02-23 03:42:27