T.J*_*der 74
在JSON中,6是第六位."6"是包含数字的字符串.那么问题的答案是"可以引用json数字吗?" 基本上是"不",因为如果你把它们放在引号中,它们就不再是数字了. 6
但是,如果解析器同时接受"attr":6和attr:"6"?
第二个例子无效,因为attr必须在引号中,例如:
{"attr": "6"}
Run Code Online (Sandbox Code Playgroud)
...有效,并attr使用字符串值定义具有属性的对象"6",而:
{"attr": 6}
Run Code Online (Sandbox Code Playgroud)
...是有效的,并定义了一个attr带有数字值的属性的对象6,最后:
{attr: 6}
Run Code Online (Sandbox Code Playgroud)
...和
{attr: "6"}
Run Code Online (Sandbox Code Playgroud)
...都是无效的JSON,因为属性名称必须是双引号.
如果MyParser有一个方法getInt来获取给定键的数字,MyParser.getInt("attr")在两种情况下都应该返回6还是在后一种情况下抛出异常?
对于提供解析器的人来说,这是一个设计决定,基本上getInt是严格的选择(如果你尝试它就抛出异常"attr": "6")或松散(强制"6"转换6并返回).JavaScript通常是松散的,因此可能存在松散的争论; 相反,JavaScript松散的事实有时会引起麻烦,这可能是严格的论据.