可以引用JSON数字吗?

可以引用JSON数字吗?,json,string,parsing,numbers,quotes,Json,String,Parsing,Numbers,Quotes,JSON数字周围可以加引号吗?在大多数搜索链接中,数字似乎不需要引号。但是,解析器是否应该同时接受“attr”:6和“attr”:“6” 如果MyParser有一个方法getInt获取给定键的数字,那么MyParser.getInt(“attr”)应该在两种情况下都返回6,还是在后一种情况下抛出异常 在中,6是数字6“6”是一个包含数字6的字符串。所以“json数字可以被引用吗?”这个问题的答案基本上是“不”,因为如果你把它们放在引号里,它们就不再是数字了 但是,解析器是否应该同时接受“attr

JSON数字周围可以加引号吗?在大多数搜索链接中,数字似乎不需要引号。但是,解析器是否应该同时接受
“attr”:6
“attr”:“6”

如果
MyParser
有一个方法
getInt
获取给定键的数字,那么
MyParser.getInt(“attr”)
应该在两种情况下都返回
6
,还是在后一种情况下抛出异常

在中,
6
是数字6<代码>“6”是一个包含数字
6
的字符串。所以“json数字可以被引用吗?”这个问题的答案基本上是“不”,因为如果你把它们放在引号里,它们就不再是数字了

但是,解析器是否应该同时接受
“attr”:6
“attr”:“6”

是的,但它们定义了不同的东西。第一个定义值为
6
(一个数字)的
attr
属性。第二个定义了一个
attr
属性,该属性的值为
“6”
(一个包含单个数字的字符串)

(问题最初是关于
attr:“6”
,这是无效的,因为属性名在JSON中必须用双引号括起来。)

如果MyParser有一个getInt方法来获取给定键的数字,那么MyParser.getInt(“attr”)应该在这两种情况下都返回6,还是在后一种情况下抛出异常


这是提供解析器的人员的设计决策,基本上是在
getInt
严格(如果您在
“attr:“6”
)或松散(强制
“6”
6
并返回)之间做出选择。JavaScript通常是松散的,因此可能有理由认为它是松散的;相反,JavaScript松散的事实有时会导致麻烦,这可能是严格的理由。

这将取决于用于获取整数的语言,因为如果编程语言不提供从字符串到int的隐式转换,则可能会出现问题

您不必太担心,因为现在的现代编程语言可以隐式地将字符串转换为数字,而无需额外的代码。您应该考虑的是,在使用JavaScript之类的编程语言时,当您在比较值时使用
==
==
时,
==
会考虑值的类型,而
==
不会,因此
6===“6”
将返回
false
,而
6==“6”
将返回
true


回答您的问题时,如果您使用的编程语言提供从字符串到int的隐式转换,则不会引发异常。

您可以引用该数字。两者都是有效的(“属性”:6和“属性”:“6”)
唯一需要记住的是,在提取值时,需要在第一种情况下使用GetInt(),在第二种情况下使用GetString(),然后将该字符串转换为整数。

OP描述的
GetInt()
方法适用于名为“MyParser”的解析器软件包。我不认为它是一个真正的解析器。记住有一个很好的论点,严格===比较要比模糊==比较快一些:读者也应该知道