更新12/30/2014
实现这一目标的最简单方法是使用JSONDecoder的object_hook回调,如下面的旧答案中所述.但是,由于这需要对数据中的每个键值对进行额外的函数调用,这可能会对性能产生影响.
所以,如果你真的想改变json处理None的方式,你需要深入挖掘一下. JSONDecoder使用扫描程序在JSON输入中查找某些令牌.不幸的是,这是一个函数,而不是一个类,因此子类化并不那么容易.扫描仪功能称为py_make_scanner,可以在json / scanner.py中找到.它基本上是一个函数,它将JSONDecoder作为参数获取并返回scan_once函数. scan_once函数接收字符串和当前扫描仪位置的索引.
一个简单的自定义扫描仪功能可能如下所示:
import json
def make_my_scanner(context):
# reference to actual scanner
interal_scanner = json.scanner.py_make_scanner(context)
# some references for the _scan_once function below
parse_object = context.parse_object
parse_array = context.parse_array
parse_string = context.parse_string
encoding = context.encoding
strict = context.strict
object_hook = context.object_hook
object_pairs_hook = context.object_pairs_hook
# customized _sca