为什么我不能用Ruby解析YAML?

时间:2014-12-19 20:44:59

标签: ruby yaml

这是我的Ruby代码:

require 'yaml'
yaml = YAML.parse(
  '''
  foo: "hello, world"
  '''
)
puts yaml['foo']

我得到了:

NoMethodError: undefined method `[]' for #<Psych::Nodes::Document:0x007f92a4404d98>

这是Ruby 2.1.3

2 个答案:

答案 0 :(得分:5)

您应该使用YAML.load代替YAML.parse according to documentation来解析YAML。

require 'yaml'
yaml = YAML.load(
  '''
  foo: "hello, world"
  '''
)
puts yaml['foo']

# => hello, world

答案 1 :(得分:4)

是什么让你认为你无法解析YAML?错误消息显示Psych::Nodes::Document没有[]方法,而且这是正确的,但事实上您返回 a {{对象而不是异常意味着解析 工作。

您可以在Psych documentation for Psych::Nodes中详细了解Psych的YAML AST的设计方式及其工作原理。