那么,有效的JSON必须是Object或Array,对吗?我期待以下代码抛出异常,但它不是:
>>> import json
>>> json.loads("245235")
245235
答案 0 :(得分:9)
这不是无效的JSON *。 Number是一个有效的JSON类型,就像对象一样。 http://en.wikipedia.org/wiki/JSON#Data_types.2C_syntax_and_example任何这些类型都可以单独出现,尽管对象和数组可能是最常见的顶级类型。
*根据python实现
编辑:
正如已删除(不确定为什么)的答案所指出的那样,python文档建议JSON RFC确实要求顶级对象是数组或对象类型,但json
模块没有&#39 ;强制执行此操作。由于我对JSON的了解很多都来自使用python json
模块,因此我不知道这种行为是否具有可移植性。
根据要求,请注明http://docs.python.org/2/library/json.html#standard-compliance:
此模块严格遵守RFC, 实现一些有效的JavaScript但无效的扩展 JSON。特别是:
- 接受并输出顶级非对象非数组值;
- 接受并输出无限和NaN数值;
- 接受对象中的重复名称,并且仅使用最后一个名称 - 值对的值。
答案 1 :(得分:2)
JSON数据可以包含wide range of types,包括字符串,数字和布尔值