在Ruby on Rails中将数组/哈希转换为YAML

8
我想从数组/哈希构造以下YAML格式:
Name:
  gender:
    - female
  nationality:
    - german
    - danish

现在我有这样一个数组:

names = ["Abbie", "Abeline", "Abelone"]

如何最简单地将这个数组转换为YAML格式?

我尝试将其转换为哈希表,并同时添加性别和国籍的值:

names.each do |name|
  (META_HASH ||= Hash.new) = name => { gender: 'female', nationality: ['german', 'danish'] }
end

然而,这只会给我一个语法错误。非常感谢任何帮助转换此内容!

1个回答

15
> require 'yaml'

> names = ["Abbie", "Abeline", "Abelone"]
=> ["Abbie", "Abeline", "Abelone"]
> puts names.to_yaml
---
- Abbie
- Abeline
- Abelone
=> nil

> h = {:name => { gender: 'female', nationality: ['german', 'danish'] }}
=> {:name=>{:gender=>"female", :nationality=>["german", "danish"]}}
> puts h.to_yaml
---
:name:
  :gender: female
  :nationality:
  - german
  - danish
=> nil

> a = names.map { |n| { n => { gender: 'female', nationality: ['german', 'danish'] } } }
> puts a.to_yaml
---
- Abbie:
    :gender: female
    :nationality:
    - german
    - danish
- Abeline:
    :gender: female
    :nationality:
    - german
    - danish
- Abelone:
    :gender: female
    :nationality:
    - german
    - danish
=> nil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接