2

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

{
    "a": 3199999999999999E+01,
    "b": 0000000000000000E+00,
    "c": 0,
    "d": 5
}

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

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

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

还请查看以下 JSFiddle:http: //jsfiddle.net/Gr6fq/。当我在 Linux 中运行它时,它可以工作。在 Windows 上,它给出了一个错误。

4

1 回答 1

6

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

使用 Firefox 5.0 的控制台:

0E+00   // Okay, parsed as 0.
00E+00  // Syntax error, identifier starts immediately after numeric literal.
于 2011-07-15T11:21:26.980 回答