假设我们有下面的ruby代码

require 'yaml'

h={"key"=>[{"step1"=>["0910","1223"]}]}
puts h.to_yaml

"0910"是字符串
但在转换之后,字符串变成八进制数。
---
key:
- step1:
  - 0910
  - '1223'

问题是我不能改变to_yaml变量。我从外面收到它,我需要在不改变它的情况下解决问题。

最佳答案

根据以0为前缀的yamlspec数字,表示一个八进制(在ruby中也是如此)。但是08不是一个有效的八进制数,所以不会被引用。
当您从yaml文件加载此数据时,数据将完全按照您的需要显示。

0> h={"key"=>[{"step1"=>["0910","1223"]}]}
=> {"key"=>[{"step1"=>["0910", "1223"]}]}

0> yaml_h = h.to_yaml
=> "---\nkey:\n- step1:\n  - 0910\n  - '1223'\n"

0> YAML.load(yaml_h)
=> {"key"=>[{"step1"=>["0910", "1223"]}]}

如果你不能在这种状态下使用数据,也许你可以扩展这个问题并给出更多细节。

07-26 06:08