我有这个 YAML:
- company:
- id: toyota
- fullname: トヨタ自動車株式会社
- company:
- id: konami
- fullname: Konami Corporation
我想获取 id 为
konami
的公司的全名。使用 Ruby 1.9.2,获得它的最简单/常用的方法是什么?
注意:在我的其余代码中,我一直在使用
require "yaml"
,所以我更愿意使用相同的库。 最佳答案
这也有效并且不使用迭代:
y = YAML.load_file('japanese_companies.yml')
result = y.select{ |x| x['company'].first['id'] == 'konami' }
result.first['company'].last['fullname'] # => "Konami Corporation"
或者,如果您有其他属性并且您不能确定
fullname
是最后一个:result.first['company'].select{ |x| x['fullname'] }.first['fullname']
我同意 Ray Toal,如果你改变你的 yml,它会变得容易得多。例如。:
toyota:
fullname: トヨタ自動車株式会社
konami:
fullname: Konami Corporation
使用上面的 yaml,获取 konami 的全名变得更加容易:
y = YAML.load_file('test.yml')
y.fetch('konami')['fullname']
关于ruby - YAML/Ruby : Get the first item whose <field> is <value>?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7143783/