我正在将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中会有所不同吗?
答案 0 :(得分:1)
According to the documentation,json.dumps
的第三个参数是skipkeys
参数,因此type
中的json.dump(data, fp, type, cls=MyEncoder)
参数被视为;变量名为type
的事实是无关紧要的,因为json.dumps
从未看到过该名称。为了使json.dumps
看到该名称,您必须将type
作为关键字参数传递:json.dump(data, fp, type=type, cls=MyEncoder)
。