Ruby - изменение значения массива хэшей - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть следующий хеш из декодера json:

{"person" => {"user" => [{"username" => "foo", "status" =>"Y", "role" => ["accounting", "sales"]}]}}

В основном я хочу изменить значение ролей, чтобы оно было в предложении с разделителями-запятыми, например, в качестве значения выполнения.приговорить.Как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Попробуйте:

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"}]}}
1 голос
/ 23 февраля 2012

Благодаря примеру 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...