我有一个值映射,键是文件名,值是数组字符串。 我有相应的文件
如何加载文件并创建一个固定的yaml值,该值包含数组的值,无论该值是否已存在
e.g。
YAML(file.yaml)
trg::azimuth:
-extra
-intra
-lateral
或
trg::azimuth:
[extra,intra,lateral]
来自
RUBY
{"file.yaml" => ["extra","intra","lateral"]}
答案 0 :(得分:1)
YAML documentation并没有很好地涵盖其方法,但确实说
底层实现是libyaml包装器Psych。
作为YAML基础的Psych documentation涵盖阅读,解析和发出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?”可能会有用,以及本页右侧的其他“相关”链接。