3 回答
TA贡献2011条经验 获得超2个赞
JavaScript中最令人困惑的部分之一是,如果数字以a开头0,而不是紧随其后的.,则它表示一个八进制,而不是十进制。
JSON借用了JavaScript语法,但避免了混淆的功能,因此完全禁止使用带前导零的数字(除非后面带有a .)。
即使这是不是这样,也就没有理由期望0仍处于数量时,这是自解析02和2有相同数量的只是差表示(如果强制十进制)。
如果前导零对您的数据很重要,则可能是字符串而不是数字。
"UPC":"083456789012"
一个产品代码是一个标识符,不是你做数学的东西。应该是一个字符串。
TA贡献1719条经验 获得超6个赞
正式地,这是因为JSON DecimalIntegerLiteral在其JSONNumber生产中使用:
JSONNumber ::
-_opt DecimalIntegerLiteral JSONFraction_opt ExponentPart_opt
并DecimalIntegerLiteral可能只有开始0,如果它是0:
DecimalIntegerLiteral ::
0
NonZeroDigit DecimalDigits_opt
背后的原因可能是:
在JSON语法中-重用ECMAScript主语法中的构造。
在主要的ECMAScript语法-更容易区分DecimalIntegerLiteral从HexIntegerLiteral和OctalIntegerLiteral。OctalIntegerLiteral首先。
看到这个作品:
HexIntegerLiteral ::
0x HexDigit
0X HexDigit
HexIntegerLiteral HexDigit
...
OctalIntegerLiteral ::
0 OctalDigit
OctalIntegerLiteral OctalDigit
添加回答
举报