将`YAML :: load_file`转换为正确的哈希值

时间:2016-07-16 14:59:31

标签: ruby yaml

所以我有这个测试脚本

require 'yaml'

hashYaml = YAML::load_file("./monFichier.yaml")
puts "hashYaml : " 
puts hashYaml

hashManuel = {enonce: "ma question", titre: "mon titre" } 
puts "hashManuel : "
puts hashManuel

其中./monFichier.yaml包含以下行:

- enonce: "ma question"
  titre: "mon titre" 

,输出为:

hashYaml : 
{"enonce"=>"ma question", "titre"=>"mon titre"}
hashManuel : 
{:enonce=>"ma question", :titre=>"mon titre"}

有人可以解释一下

  1. 为什么两条线都不同?
  2. 我如何以与hashYaml相同的格式获取hashManuel
  3. 干杯,

1 个答案:

答案 0 :(得分:0)

所以我找到this answer,我检查了它是否正常工作。

按如下方式编辑Yaml文件:

- :enonce: "ma question"
  :titre: "mon titre" 

还有其他方法不涉及修改我的yaml文件吗? 是的,见下文

编辑:我正在寻找的答案

改编自this post

所以我的Yaml文件在Ruby中定义了一个哈希表。说,它写着:

- enonce: "ma question facile"
  titre: "mon titre clair" 
- enonce: "ma question dure"
  titre: "mon titre obscur" 

要在Ruby中导入此文件作为其键为符号的哈希列表,即{:myKey => "itsValue"} (在我知道词汇之前我的意思是正确哈希 一个可以如下进行:

require 'yaml'

hashYaml = YAML::load_file('./monFichier.yaml')

hashYaml.each do |currentHash| # I am really working with a table of hash(es)
  currentHash.keys.each do |key|
    currentHash[(key.to_sym rescue key) || key] = currentHash.delete(key)
  end
end

干杯,