这是我的代码:
require 'yaml'
class Person
attr_accessor :name, :age
end
yaml_string = <<END_OF_DATA
---
-!ruby/object:Person
age: 45
name: Jimmy
- !ruby/object:Person
age:23
name: Laura Smith
END_OF_DATA
test_data = YAML::load(yaml_string)
puts test_data[0].name
puts test_data[1].name
这是我得到的结果:
ruby yaml1.rbC:/Ruby200/lib/ruby/2.0.0/心理。在 CC__parse_stream '从C:/Ruby200/lib/ruby/2.0.0/心理。rb:153:in
parse' from C:/Ruby200/lib/ruby/2.0.0/psych.rb:129:in
load'从yaml1。rb: 17:在"退出代码:1
根据我正在读的书(begining Ruby by Peter Cooper)。我的结果应该如下所示:
Jimmy
Laura Smith
有人知道为什么会这样吗?我哪里做错了?
你的YAML格式不正确,我猜是手写的。这是正确的版本
---
- !ruby/object:Person
age: 45
name: Jimmy
- !ruby/object:Person
age: 23
name: Laura Smith
如果你没有发现差异,这里是
-
age: ...
和name: ...
条目需要缩进 - 第二行(
-!ruby/object:Person
)在破折号(-)和空格(!)之间缺少一个空格 -
age:23
中的数字23和冒号之间需要一个空格