我有这个 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/

10-13 01:27