RubyでYAMLをロードする際にキーをSymbolにする方法
※古いRubyのバージョンで動くかは不明
RubyでYAMLのデータをロードする際にキーをStringじゃなくてSymbolにしてほしい場合はsymbolize_namesを設定すればいいっぽい(デフォルトはfalseな模様)
require "psych"
data =<<EOS
a: A
date: 2000-01-01 00:00:00
persons:
- name: a
age: 21
EOS
#a = Psych.load(data, permitted_classes: [Time])
a = Psych.load(data, permitted_classes: [Time], symbolize_names: true)
p a
実行すると以下のような結果が得られる
{
a: "A",
date: 2000-01-01 09:00:00 +0900,
persons: [
{name: "a", age: 21}
]
}
※見やすいように整形してます
YAMLじゃなくてPsychでやってるのはPsych4.0からYAML.loadが非推奨になるだのどーたらこーたら言われてるのを見たので(ry
余談
RailsとかにはActiveSupport?symbolize_keysとかいうのがあるらしい(未検証)