我怎么能读YAML文件?

我有这样一个YAML文件:

Company1: name: Something1 established: 2000 # Company2: name: Something2 established: 1932 

阅读YAML文件:(**更新**)

  config = YAML.load_file('file.yaml') config.each do |key, value| if(key == 'name') company_name = value #year = config['Company1']['established'] year = config.fetch(key)['established'] end end 

**更新**现在上面的代码正常工作,但它显示的结果如下:

  company1 => {"name" => "something1"} => {"established year" => 2000"} 

如何删除{}和“”?

好的,这是你的YAML文件吗?

 Company1: name: Something1 established: 2000 Company2: name: Something2 established: 1932 

好的,现在这个YAML文件实际上代表了一个哈希。 有两个键,即Company1,Company2(因为它们是主要条目,子条目(名称和已建立)在它们下面缩进)。 这两个键的值再次是哈希。 这个Hash也有2个键,即name和established。 它们的值分别为Something1和2000等。

所以当你这样做的时候

 config=YAML.load_file('file.yml') 

并使用打印配置(表示YAML文件内容的Hash),

 puts config 

你得到以下输出:

 {"Company1"=>{"name"=>"Something1", "established"=>2000}, "Company2"=>{"name"=>"Something2", "established"=>1932}} 

所以我们有一个Hash对象,如YAML文件所描述的那样。

使用这个Hash非常简单。

由于每个公司的名称和年份都是由外部哈希(company1,company2)保存的单独哈希,我们可以遍历这些公司。 以下代码打印哈希。

 config.each do |company,details| puts company puts "-------" puts "Name: " + details["name"] puts "Established: " + details["established"].to_s puts "\n\n" end 

因此,在每次迭代中,我们都可以访问Hash的每个(键,值)。 在第一次迭代中,我们将company (密钥)作为Company1 ,将details (值)作为{"name"=>"Something1", "established"=>2000}

希望这有帮助。

YAML使用缩进来进行作用域 ,所以请尝试,例如:

 Company1: name: Something1 established: 2000 Company2: name: Something2 established: 1932