Rails
rails3
Rails4

Rails | ハッシュのキーを全てシンボルから文字列に変える ( stringify_keys / deep_stringify_keys )

More than 1 year has passed since last update.

表題のとおり。

{ a: 1, b: 2, c: 3 }.stringify_keys

# => {"a"=>1, "b"=>2, "c"=>3}

ハッシュの階層が深い時

deep_stringify_keys なら、階層を問わず、ぜんぶシンボルに変えてくれる。( Rails4 )

{ a: 1, b: 2, c: { d: 3 } }.deep_stringify_keys

# => {"a"=>1, "b"=>2, "c"=>{"d"=>3}}

すごいぞ deep_stringify_keys

deep_stringify_keys なら、たとえば途中に配列があっても気にしない。

{ a:1, b: 2, c: [ { d: [ { e:3 } ] } ] }.deep_stringify_keys

# => {"a"=>1, "b"=>2, "c"=>[{"d"=>[{"e"=>3}]}]}

補足

  • 破壊的メソッドもある。 ( stringify_keys! / deep_stringify_keys! )
  • stringfy ではなく stringify 。タイポに注意。
  • 「Rails / すべて / シンボル / 文字列に」でググってもヒットしなかったので投稿。

環境

  • Rails 4.2.6