为什么这个YAML语法不正确?

Chr*_*tez 1 yaml ruby-on-rails ruby-on-rails-3

我在Ruby on Rails中运行一个程序,并在YAML中设置了一组哈希.我得到一个ArgumentError显然是因为在同一行上有一个开口花括号作为前一个哈希的右括号.

例如,我有:

features: [
  {
    name: lorem ipsum,
    bullets: [
      "bullet 1",
      "bullet 2"
    ]
  },{
    name: lorem ipsum 2,
    bullets: [
    ...
  }
]
Run Code Online (Sandbox Code Playgroud)

它给了我错误.但是,当我将开口花括号放在一个新行上时,如下所示:

  },
  {
    name: lorem ipsum 2,
    ...
Run Code Online (Sandbox Code Playgroud)

它工作正常.

我使用Ruby v.1.8.7,Rails v.3.2.1和Rails Config v.2.2.4来读取YAML文件并在我的应用程序中访问它.

任何想法如何使YAML接受我的语法而不用后一种方式?

Dyl*_*kow 8

YAML不使用大括号,括号等.相反,所有内容都将按原样解析为哈希,并且您只需要在列表项前面插入连字符:

features:
- name: lorem ipsum
  bullets:
  - bullet 1
  - bullet 2
- name: lorem ipsum 2
  bullets:
  - ...
Run Code Online (Sandbox Code Playgroud)

加载这将给你:

{"features"=>[
  {
    "name"=>"lorem ipsum", 
    "bullets"=>["bullet 1", "bullet 2"]
  },
  {
    "name"=>"lorem ipsum 2",
    "bullets"=>["..."]
  }
]}
Run Code Online (Sandbox Code Playgroud)

  • 根据当前的 [YAML 规范](http://yaml.org/spec/1.0/#id2489726),YAML 确实有大括号和方括号。 (5认同)