将Ruby YAML结果存储到数组中

时间:2016-02-21 01:50:15

标签: ruby yaml

所以我有一个空数组和一个.yml文件。我已设法使用此代码输出该文件的结果

puts YAML.load_file('some_yml_file.yml').inspect

我想知道,我如何提取每个数据并将它们存储到一个空数组中?

是吗

emptyarray = []
YAML.load_file('some_yml_file.yml').inspect do |entry|
    emptyarray << entry
end

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:1)

YAML.load_file返回与YAML表示的数据结构类型对应的Ruby对象。如果YAML包含序列,YAML.load_file将返回一个Ruby数组。您无需进一步将数据放入数组中,因为它已经是一个数组:

yaml = <<END
---
- I am
- a YAML
- sequence
END

data = YAML.load(yaml)
puts data.class
# => Array
puts data == ["I am", "a YAML", "sequence"]
# => true

(您会注意到我使用YAML.load从字符串而不是文件加载数据,但结果与在具有相同内容的文件上使用YAML.load_file相同。)

如果YAML中的顶级结构不是序列(例如,如果它是一个映射,类似于Ruby哈希),那么你将不得不做额外的工作将它变成一个数组,但我们不能告诉你在没有看到你的YAML的情况下代码会是什么样子。

答案 1 :(得分:0)

使用YAML.load_file('some_yml_file.yml').inspect do |entry|更改YAML.load_file('some_yml_file.yml').each do |entry|,它应该按预期工作(假设它不是字符串)。

如果您在YAML文件中发布数据结构的样本以及您希望提取并放入数组的内容,那么这将有所帮助。