键中的 ruby​​ to_yaml 冒号

kot*_*a85 2 ruby hash yaml

我正在将散列转换为 ruby​​ 中的 yaml,但它添加了 : 到键: 例如:

:name: "Name"
:value: "Value"
Run Code Online (Sandbox Code Playgroud)

如果有办法避免并只输出:

name: "Name"
value: "Value"
Run Code Online (Sandbox Code Playgroud)

我可以用 gsub 轻松做到这一点,但只是好奇

tad*_*man 5

如果您使用字符串键,您将不会获得这些前缀。当您使用符号键序列化某些内容时会发生这种情况。

在 Rails 或使用 ActiveSupport 中,您可以在调用deep_stringify_keys之前调用以将它们全部转换YAML.dump.

否则 YAML 只是试图尽可能准确地序列化和反序列化。:name: x具有{ :name => 'x' }作为结果数据的恢复文件。

  • 使用 ruby​​ 2.5 你可以使用`the_hash.transform_keys(&:to_s)` (3认同)