转储 YAML 时如何强制使用双引号?

jom*_*omo 6 ruby yaml

我有一个小脚本来自动化 YAML 文件中的一些事情。

我读取了原始的 YAML 文件并将其转换为哈希,然后在修改后将其转储到文件中:

File.open(output_file, "w") do |out|
  YAML.dump(modified_hash, out)
end
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果不需要,它会删除字符串周围的双引号。这是有效的 YAML,但它看起来不太好。

我可以在每个字符串的末尾添加一个空格来强制使用单引号,但我对此不太满意。有没有办法在字符串周围强制使用双引号?

jom*_*omo 0

我找到了一个解决方案,这很奇怪,但它有效。

为了强制使用单引号,我遍历了哈希并将其附加"foobar "(注意空格)到每个值。使用后YAML.dump,我再次打开文件并替换"foobar "为空字符串。

为了强制使用双引号,我发现附加"foo \nbar"可以完成这项工作。然后,我再次打开该文件并替换"foo \\nbar"为空字符串。很奇怪,但是有效。

请注意,您可能想要选择比 foobar 不太可能使用的东西。