json - 可以引用 JSON 数字吗?

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/

相关文章:

arrays - 如何定义键值对的 Typescript Map。其中key是一个数字,value是

json - jackson 自动将 Joda DateTime 格式化为 ISO 8601 格式

json - 从动态 json 数据更新力有向图上的链接

javascript - 脚本5009 : 'JSON' is undefined

c# - 使用 Json.Net 以 dd/MM/yyyy 格式反序列化日期

json - 如果整数以前导零开头,为什么 JSON 无效?

json - 使用一些已知和一些未知的字段名解码 JSON

c# - 获取数组 JSON.Net 的长度

json - PostgreSQL 嵌套 JSON 查询

c# - 反序列化客户端 AJAX JSON 日期