hirakiucの日記

いろいろ

rubyのJSON.parseでhashキーをsymbolにしてもらう方法

Ruby JSON parse changes Hash keys

  • ruby 1.9.3p393
    • json (1.8.0)
$ pry
[1] pry(main)> require 'json'
=> true

# hashをjsonへ変換
[2] pry(main)> json = {:key_a => "value2", :key_b => "value3"}.to_json
=> "{\"key_a\":\"value2\",\"key_b\":\"value3\"}"

# 普通にparseしてもらうと keyはString
[3] pry(main)> p JSON.parse(json)
{"key_a"=>"value2", "key_b"=>"value3"}
=> {"key_a"=>"value2", "key_b"=>"value3"}

# optionを指定すると、keyをSymbolにしてくれる
[4] pry(main)> p JSON.parse(json, {:symbolize_names => true})
{:key_a=>"value2", :key_b=>"value3"}
=> {:key_a=>"value2", :key_b=>"value3"}