Python JSON模块不会为无效的JSON抛出异常

时间:2013-04-17 13:23:13

标签: python json

那么,有效的JSON必须是Object或Array,对吗?我期待以下代码抛出异常,但它不是:

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

2 个答案:

答案 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,包括字符串,数字和布尔值