ruby YAML用数字解析bug

时间:2012-06-18 13:04:11

标签: ruby yaml

我遇到了YAML解析器的错误。以这个简单的yaml文件为例:

new account:
  - FLEETBOSTON
  - 011001742

如果使用这个ruby代码行解析它:

INPUT_DATA = YAML.load_file("test.yml")

然后我回来了:

{"new account"=>["FLEETBOSTON", 2360290]}

我做错了吗?因为我很确定这绝不应该发生。

1 个答案:

答案 0 :(得分:7)

应该发生。以0开头的数字是八进制表示法。除非下一个字符是x,否则它们是十六进制的。

07 == 7
010 == 8
011 == 9

0x9 == 9
0xA == 10
0xF == 15
0x10 == 16
0x11 == 17

进入irb,然后输入011001742

1.9.2-p290 :001 > 011001742
 => 2360290 

PEBKAC。 :)

您的号码是一个号码,因此被视为一个号码。如果你想明确地将它作为字符串,请将其括在引号中,因此YAML不会尝试将其作为数字。

new account:
  - FLEETBOSTON
  - '011001742'