我需要将下面提供的哈希转换为可读的YAML.看起来我可以提供YAML::load
一个字符串,但我想我需要先将它转换成这样的东西:
hostname1.test.com:
public: 51
private: 10
{"hostname1.test.com"=>
{"public"=>"51", "private"=>"10"},
"hostname2.test.com"=>
{"public"=>"192", "private"=>"12"}
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何有效地转换成该字符串.
我查看了HASH文档,找不到任何内容to_yaml
.我找到了它,通过搜索to_yaml
哪个可用require yaml
.我也尝试使用Enumerable方法,collect
但在需要迭代值(另一个哈希)时感到困惑.
我正在尝试使用" 将Ruby转换为Ruby中的字符串 "作为参考.我的想法是把它喂入,YAML::load
这会产生我想要的YAML.
the*_*Man 58
这是我如何做到的:
require 'yaml'
HASH_OF_HASHES = {
"hostname1.test.com"=> {"public"=>"51", "private"=>"10"},
"hostname2.test.com"=> {"public"=>"192", "private"=>"12"}
}
ARRAY_OF_HASHES = [
{"hostname1.test.com"=> {"public"=>"51", "private"=>"10"}},
{"hostname2.test.com"=> {"public"=>"192", "private"=>"12"}}
]
puts HASH_OF_HASHES.to_yaml
puts
puts ARRAY_OF_HASHES.to_yaml
Run Code Online (Sandbox Code Playgroud)
哪个输出:
---
hostname1.test.com:
public: '51'
private: '10'
hostname2.test.com:
public: '192'
private: '12'
---
- hostname1.test.com:
public: '51'
private: '10'
- hostname2.test.com:
public: '192'
private: '12'
Run Code Online (Sandbox Code Playgroud)
Object类有一个to_yaml方法.我用它,它正确生成了YAML文件.
不,它没有.
这是一个刚刚开放的IRB会议:
Object.instance_methods.grep(/to_yaml/)
=> []
require 'yaml'
=> true
Object.instance_methods.grep(/to_yaml/)
=> [:psych_to_yaml, :to_yaml, :to_yaml_properties]
Run Code Online (Sandbox Code Playgroud)
你可以to_yaml
在哈希上使用这个方法,我相信你require yaml
归档时间: |
|
查看次数: |
43815 次 |
最近记录: |