1

那么,有效的 JSON 必须是对象或数组,对吗?我期待以下代码引发异常,但事实并非如此:

>>> import json
>>> json.loads("245235")
245235
4

2 回答 2

9

这不是无效的 JSON*。Number 是一个有效的 JSON 类型,就像 object。http://en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example这些类型中的任何一个都可以单独出现,尽管对象和数组可能是最常见的顶级类型。

*根据python实现

编辑:

正如在已删除(不确定为什么)的答案中指出的那样,python 文档建议 JSON RFC 确实要求顶级对象为数组或对象类型,但该json模块不强制执行此操作。由于我对 JSON 的很多了解都来自使用 pythonjson模块,因此我不知道这种行为的可移植性如何。

根据要求,这在http://docs.python.org/2/library/json.html#standard-compliance中注明:

该模块不以严格的方式遵守 RFC,实现了一些有效 JavaScript 但无效 JSON 的扩展。尤其:

  • 接受并输出顶级非对象、非数组值;
  • 接受并输出无穷大和 NaN 数值;
  • 接受对象内的重复名称,并且仅使用最后一个名称-值对的值。
于 2013-04-17T13:24:53.890 回答
2

JSON 数据可以有多种类型,包括字符串、数字和布尔值

于 2013-04-17T13:26:02.223 回答