假设我们有以下
ruby代码
require 'yaml'
h={"key"=>[{"step1"=>["0910","1223"]}]}
puts h.to_yaml
“0910”是一个字符串
但是在to_yaml转换之后,字符串变成八进制数.
---
key:
- step1:
- 0910
- '1223'
问题是我无法改变h变量.我从外面收到它,我需要在不改变的情况下解决问题.
最佳答案 根据YAML
spec数字前缀为0信号和八进制基数(如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"]}]}
如果您无法在此状态下使用数据,那么您可以扩展问题并提供更多详细信息.