假设我们有下面的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"]}]}
如果你不能在这种状态下使用数据,也许你可以扩展这个问题并给出更多细节。