【Rails】symbolize_keysとstringify_keys
2020/12/14
ハッシュのキーをシンボルから文字列にしたい時があって調べたのでまとめる。
Rails
ハッシュのキーを文字列からシンボルに変える
{ 'name' => 'takagi', 'age' => 27 }.symbolize_keys
#=> {:name=>"takagi", :age=>27}
ハッシュのキーをシンボルから文字列に変える
{ :name => "takagi", :age => 27 }.stringify_keys
#=> {"name"=>"takagi", "age"=>27}
ネストがある場合
stringify_keys
だと全部は変換できない
{ :name => "takagi", :age => 27, :other => { :hoge => 1 } }.stringify_keys
#=> {"name"=>"takagi", "age"=>27, "other"=>{:hoge=>1}}
{ :name => "takagi", :age => 27, :other => { :hoge => 1 } }.deep_stringify_keys
#=> {"name"=>"takagi", "age"=>27, "other"=>{"hoge"=>1}}
JSONをパースしたい時
symbolize_names: true
のオプションを付ける
JSON.parse('{"name": "takagi", "age": 27}')
#=> {"name"=>"takagi", "age"=>27}
JSON.parse('{"name": "takagi", "age": 27}', symbolize_names: true)
#=> {:name=>"takagi", :age=>27}
Ruby
transform_keys
を使う
{ 'name' => 'takagi', 'age' => 27 }.transform_keys(&:to_sym)
#=> {:name=>"takagi", :age=>27}
{ :name => "takagi", :age => 27}.transform_keys(&:to_s)
#=> {"name"=>"takagi", "age"=>27}