可以引用JSON数字吗?
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
“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”的解析器软件包。我不认为它是一个真正的解析器。记住有一个很好的论点,严格===比较要比模糊==比较快一些:读者也应该知道