YAML documentation 没有很好地介绍它的方法,但确实说
底层实现是 libyaml 包装器 Psych。
Psych documentation 是 YAML 的基础,涵盖读取、解析和发出 YAML。
基本流程如下:
require 'yaml'
foo = {"file.yaml" => ["extra","intra","lateral"]}
bar = foo.to_yaml
# => "---\nfile.yaml:\n- extra\n- intra\n- lateral\n"
下面是生成的序列化 bar 变量的样子:
puts bar
# >> ---
# >> file.yaml:
# >> - extra
# >> - intra
# >> - lateral
这是 YAML 解析器需要的格式:
baz = YAML.load(bar)
baz
# => {"file.yaml"=>["extra", "intra", "lateral"]}
此时哈希已经往返,从 Ruby 哈希到 YAML 序列化字符串,再回到 Ruby 哈希。
使用 Ruby 的 File.write 方法将 YAML 写入文件很容易:
File.write(foo.keys.first, foo.values.first.to_yaml)
或
foo.each do |k, v|
File.write(k, v.to_yaml)
end
这会产生一个名为“file.yaml”的文件,其中包含:
---
- extra
- intra
- lateral
要读取和解析文件,请使用 YAML 的 load_file 方法。
foo = YAML.load_file('file.yaml')
# => ["extra", "intra", "lateral"]
“How do I parse a YAML file?”以及此页面右侧的其他“相关”链接可能有用。