をハッシュ私は、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
[編集]例えば:maerics例に
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
@oprogfrogo:ハッシュを変数にコピーして "h"を呼び出し、 "fix_roles(h)"を呼び出すと、あなたのハッシュが記述どおりに変更されます。 – maerics
私に戻ってくれてありがとう。これは配列の最初の要素で機能します。複数の要素がある場合、どのように更新することができますか?このように、h = {"person" => {"user" => [{"username" => "foo"、 "status" => "Y"、 "roles" => ["accounting"、 "sales" ]、{"username" => "bar"、 "status" => "Y"、 "roles" => ["customer service"、 "sales"]}}} – oprogfrogo
おかげで、私は、各配列要素を反復することによって、解決を達成することができた:
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
あなたは明確になりますか?あなたは '' accounting ''、 'sales' ''を' 'accounting、sales" 'にしたがっていますか? – Linuxios
はい、私は何をしようとしています。 – oprogfrogo