【问题标题】:I have an issue with require 'yaml' ,anyone can shed any light?我对 require 'yaml' 有疑问,任何人都可以解释一下吗?
【发布时间】:2014-08-23 19:39:40
【问题描述】:

这是我的代码:

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:in 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:inparse_stream' 来自 C:/Ruby200/lib/ruby/2.0.0/psych.rb:153:in parse' from C:/Ruby200/lib/ruby/2.0.0/psych.rb:129:inload' 来自 yaml1.rb:17:in `' 退出代码:1

根据我正在阅读的书(Peter Cooper 的 Begging Ruby)。我的结果应该如下所示:

Jimmy
Laura Smith

有人知道为什么会这样吗?我做错了什么?

【问题讨论】:

    标签: ruby yaml


    【解决方案1】:

    您的 YAML 格式不正确,我猜是手写的。这是一个正确的版本

    ---
    - !ruby/object:Person
      age: 45
      name: Jimmy
    - !ruby/object:Person
      age: 23
      name: Laura Smith
    

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

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

    【讨论】:

    • 成功了。谢谢!...我如何缩进年龄:和姓名:?
    • 只需在每行的开头添加几个空格:)。
    猜你喜欢
    • 1970-01-01
    • 2011-03-31
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多