JSON中的浮点零(0000000000000000E + 00)未在jQuery(Windows)/ JSONLint中解析

myd*_*rms 2 javascript validation jquery json jsonlint

我有一个JSON包含浮点数0000000000000000E + 00(基本上为零)的问题.例如,考虑一下:

{
    "a": 3199999999999999E+01,
    "b": 0000000000000000E+00,
    "c": 0,
    "d": 5
}
Run Code Online (Sandbox Code Playgroud)

在以下情况下,零浮点数会出错:

  • 通过JSONLint运行它(http://jsonlint.com/)
  • 使用jQuery.parseJSON(IE和Firefox,各种版本的jQuery)在Windows上的浏览器中进行评估

将零浮点数更改为任何非零值都不会给您带来麻烦.

另请参阅以下JSFiddle:http: //jsfiddle.net/Gr6fq/.当我在Linux中运行它时,它可以工作.在Windows上,它会出错.

Fré*_*idi 6

看起来Javascript解析器将最左边的前导零解释为八进制修改器,并继续将当前令牌解析为八进制数.然后E它会在它遇到的令牌上窒息.

使用Firefox 5.0的控制台:

0E+00   // Okay, parsed as 0.
00E+00  // Syntax error, identifier starts immediately after numeric literal.
Run Code Online (Sandbox Code Playgroud)