在JSON中数字不能以零开头?

在JSON中数字不能以零开头?,json,Json,我不太清楚JSON格式中用于说明数字语法的图形的解释,但根据我的阅读,数字不能以零开头 按照我的理解,它是一个或一个减号,然后是一个或一个零或以非零数字开头的数字。换言之: 0 OK -0 OK 2 OK -2 OK 103 OK -103 OK -045 INVALID 045 INVALID 0好的 -0好的 2好的 -2好的 103好的 -103好的 -045无效 045无效 这是正确的解释吗?正确,JSON中的数字不能有前导零 原因在很大程度上是历史性

我不太清楚JSON格式中用于说明数字语法的图形的解释,但根据我的阅读,数字不能以零开头

按照我的理解,它是一个或一个减号,然后是一个或一个零或以非零数字开头的数字。换言之:

0 OK -0 OK 2 OK -2 OK 103 OK -103 OK -045 INVALID 045 INVALID 0好的 -0好的 2好的 -2好的 103好的 -103好的 -045无效 045无效
这是正确的解释吗?

正确,JSON中的数字不能有前导零

原因在很大程度上是历史性的:JSON源于JavaScript文字符号。在JavaScript数字文字表示法中,前导0表示八进制(基数8),因此
010
将是数字8。这是ECMAScript规范的第1版和第2版(分别为1997年和1998年)。在第三版中,它被弃用为可选的“附加”语法,而在第五版(没有第四版)中,它在新的“严格”模式中被禁止。最后,ES2015(也称为第6版,TC39决定在这里开始使用years)引入了一种明确的八进制表示法:前导的
0o
前缀(不区分大小写),类似于十六进制的
0x
前缀


在所有关于前导0是否应该表示八进制的争论中,Crockford定义了JSON,不允许前导0简化了事情并避免了混淆,这两个在定义JSON时都很重要。为了简单/易于解析,他甚至决定不支持十六进制。

你是对的,给定图形,在初始零之后,你只能继续使用一个点或跳到指数部分听起来差不多。如果它不支持十六进制,为什么要支持八进制?(顺便说一句,
-045
的值为
-37
)。的可能重复