我对需要"yaml"有问题,任何人都可以提供任何信息吗?



这是我的代码:

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

如果你没有发现差异,这里是

  1. age: ...name: ...条目需要缩进
  2. 第二行(-!ruby/object:Person)在破折号(-)和空格(!)之间缺少一个空格
  3. age:23
  4. 中的数字23和冒号之间需要一个空格

最新更新