JSONをそのままRubyのコードに貼ってrspecのダミーデータを作ろう!とかやると あれ、ここ文字列じゃなくシンボルになってるじゃん…
みたいな意趣違いをよく起こすのでメモ。
環境
$ ruby -v ruby 2.5.0p0
ケース別サンプル
キーを文字列にしたい
ポピュラーなやり方は1種類
hash = { "key" => "value" } # => {"key"=>"value"}
キーをシンボルにしたい
基本はこっちになる。
hash = { :key => "value" } # => {:key=>"value"} hash = { key: "value" } # => {:key=>"value"} hash = { "key": "value" } # => {:key=>"value"}
一番最後が文字列がキーになると勘違いしがち
紛らわしい例
変数を使った場合
var = "key" # => "key" hash = { var => "value"} #=> {"key"=>"value"} hash = { "#{var}": "value"} #=> {:key=>"value"}
なお当たり前だけど、こう書くとぜんぜん違う意図になる
hash = { var: "value" } #=> {:var=>"value"}