在python2中将其他参数传递给json.dump

时间:2019-06-08 21:46:49

标签: json python-2.7

我正在将json.dump与python2中的自定义编码器一起使用,我想通过这种方式将附加参数传递给编码器:

json.dump(data, fp, type, cls=MyEncoder)

How to pass parameters to a custom JSONEncoder default() function in Python之后,我编写了编码器:

class MyEncoder(json.JSONEncoder):
    def __init__(self, type, **kwargs):
        super(MyEncoder, self).__init__(**kwargs)
        self.type = type

    def default(self, obj):
        type = self.type
        if isinstance(obj, datetime):
            # there was the line:

但是,在 init 中,type值被分配给kwargs['skipkeys'],而不是type变量。

我想念什么?

在python3中会有所不同吗?

1 个答案:

答案 0 :(得分:1)

According to the documentationjson.dumps的第三个参数是skipkeys参数,因此type中的json.dump(data, fp, type, cls=MyEncoder)参数被视为;变量名为type的事实是无关紧要的,因为json.dumps从未看到过该名称。为了使json.dumps看到该名称,您必须将type作为关键字参数传递:json.dump(data, fp, type=type, cls=MyEncoder)