我有一个问题'要求'yaml',任何人都可以放弃任何光线?

时间:2014-08-23 19:39:40

标签: ruby 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.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:in parse' 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

任何人都知道为什么会这样吗?我做错了什么?

1 个答案:

答案 0 :(得分:4)

您的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和冒号之间需要一个空格