JSON 数字周围可以有引号吗?在大多数搜索链接中,数字似乎并不“需要”引号。但是,解析器是否应该同时接受 "attr": 6
和 "attr": "6"
?
如果 MyParser
有一个方法 getInt
来获取给定键的数字,那么 MyParser.getInt("attr")
是否应该返回 6
在这两种情况下,还是在后一种情况下抛出异常?
最佳答案
在 JSON , 6
是数字六。 "6"
是一个 string,包含 digit 6
。所以“可以引用json数字吗?”这个问题的答案基本上是“不”,因为如果你把它们放在引号里,它们就不再是数字了。
But, should the parsers accept both
"attr" : 6
and"attr" : "6"
?
是的,但它们定义不同的东西。第一个定义了一个 attr
属性,其值为 6
(一个数字)。第二个定义了一个 attr
属性,其值为 "6"
(一个包含单个数字的字符串)。
(最初问的问题是关于attr: "6"
,这是无效的,因为属性名在JSON中必须用双引号括起来。)
If MyParser has a method getInt to get a number given the key, should MyParser.getInt("attr") return 6 in both the cases or throw an exception in the latter case?
这是提供解析器的人的设计决定,基本上是 getInt
之间的选择是严格的(如果你在 "attr": "6"上尝试它会抛出异常
) 或松散(将 "6"
强制为 6
并返回)。 JavaScript 通常是松散的,因此可能存在松散的争论;相反,JavaScript 松散的事实有时会引起麻烦,这可能是严格的论据。
https://stackoverflow.com/questions/15368231/