这是我的代码:
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.rb C:/Ruby200/lib/ruby/2.0.0/psych.rb:205:在
parse': (<unknown>): mapping values are not allowed in this context at line 3 column 4 (Psych::SyntaxError) from C:/Ruby200/lib/ruby/2.0.0/psych.rb:205:in
parse_stream'中 来自C:/Ruby200/lib/ruby/2.0.0/psych.rb:153:inparse' from C:/Ruby200/lib/ruby/2.0.0/psych.rb:129:in
load' 来自yaml1.rb:17:in'' 退出代码:1
根据我正在阅读的书(Peter Cooper的Beggining Ruby)。我的结果应该如下所示:
Jimmy
Laura Smith
任何人都知道为什么会这样吗?我做错了什么?
答案 0 :(得分:4)
您的YAML格式不正确,我想是手写的。这是一个正确的版本
---
- !ruby/object:Person
age: 45
name: Jimmy
- !ruby/object:Person
age: 23
name: Laura Smith
如果你没有发现差异,这里就是
age: ...
和name: ...
需要缩进-!ruby/object:Person
)中缺少一个空格(!)age:23