为什么我在将YAML数据转换回工作对象时遇到Psych :: SyntaxError

时间:2015-01-13 15:41:14

标签: ruby yaml

Ruby版本:ruby 2.0.0p576 (2014-09-19 revision 47628) [x86_64-darwin13.4.0] 我正在阅读“开始红宝石”一书,并坚持将YAML数据转换回工作对象。 (值得一提的是,将工作对象转换为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
发生

错误

2.0.0-p576 :013"> END_OF_DATA
 => "---\n- !ruby/object:Person\nage: 45\nname: Jimmy\n- !ruby/object:Person\nage: 23\nname: Laura Smith\n" 
2.0.0-p576 :014 > test_data = YAML::load(yaml_string)
Psych::SyntaxError: (<unknown>): did not find expected '-' indicator while parsing a block collection at line 2 column 1

我做了一些研究,直觉上,我认为这个链接click here正在说明这个问题。但是,由于我的“幼儿园”级别的红宝石语言,我不知道他们在谈论什么。希望有人能帮助我解决这个问题并完全理解它。提前谢谢!

1 个答案:

答案 0 :(得分:3)

你错过了一些缩进。 YML不是与空白无关的。请尝试使用此数据:

yaml_string = <<END_OF_DATA
---
- !ruby/object:Person
  age: 45
  name: Jimmy
- !ruby/object:Person
  age: 23
  name: Laura Smith
END_OF_DATA