繁体   English   中英

如何将Yaml文件解析为ruby哈希和/或数组?

[英]How to parse a yaml file into ruby hashs and/or arrays?

我需要将yaml文件加载到Hash中,
我该怎么办?

我会用类似的东西:

hash = YAML.load(File.read("file_path"))

使用YAML模块:
http://ruby-doc.org/stdlib-1.9.3/libdoc/yaml/rdoc/YAML.html

node = YAML::parse( <<EOY )
one: 1
two: 2
EOY

puts node.type_id
# prints: 'map'

p node.value['one']
# prints key and value nodes: 
#   [ #<YAML::YamlNode:0x8220278 @type_id="str", @value="one", @kind="scalar">, 
#     #<YAML::YamlNode:0x821fcd8 @type_id="int", @value="1", @kind="scalar"> ]'

# Mappings can also be accessed for just the value by accessing as a Hash directly
p node['one']
# prints: #<YAML::YamlNode:0x821fcd8 @type_id="int", @value="1", @kind="scalar"> 

http://yaml4r.sourceforge.net/doc/page/parsing_yaml_documents.htm

venables答案的简单版本:

hash = YAML.load_file("file_path")

您可能会遇到在此相关问题上提到的问题 ,即YAML文件或流指定了YAML加载程序尝试将数据转换成的对象。 问题是您将需要相关的Gem,该Gem知道有关的对象。

我的解决方案非常简单,可以作为该问题的答案。 做这个:

yamltext = File.read("somefile","r")
yamltext.sub!(/^--- \!.*$/,'---')
hash = YAML.load(yamltext)

本质上,您从yaml-text中剥离了对象分类器文本。 然后您解析/加载它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM