Python Simplejson.dump默认参数不起作用

Python Simplejson.dump默认参数不起作用,python,json,simplejson,Python,Json,Simplejson,嗨,我有以下代码: def dah(o): assert False print simplejson.dumps(['string', None, 3, 0], default=dah) 问题是上面的代码应该抛出一个异常——但它没有。它完全忽略了我的默认类 我还尝试使用以下方法: class NoneToEmptyStringEncoder(simplejson.JSONEncoder): """ Json encoder that replaces nulls wi

嗨,我有以下代码:

def dah(o):
    assert False
print simplejson.dumps(['string', None, 3, 0], default=dah)
问题是上面的代码应该抛出一个异常——但它没有。它完全忽略了我的默认类

我还尝试使用以下方法:

class NoneToEmptyStringEncoder(simplejson.JSONEncoder):
    """
    Json encoder that replaces nulls with empty strings
    """
    def default(self, o):
        assert False
        if o:
            return super(NoneToEmptyStringEncoder, self).default(o)
        else:
            return super(NoneToEmptyStringEncoder, self).default('')
print simplejson.dumps(['string', None, 3, 0], cls=NoneToEmptyStringEncoder)
但它并没有抛出断言错误,它完全忽略了我的行为,并正常工作


我是不是错过了什么

为什么您希望在第一个示例中调用
dah
?那里的一切(列表、字符串、无和整数)都是simplejson所知道的<代码>默认值仅对它不知道的对象类型调用。(顺便说一句,
None
被翻译成
null
)。请参阅。@WarrenWeckesser,这通常很有用,但OP没有使用Python的
json
模块-他们正在使用。差别在最坏的情况下应该是最小的,尽管:-)@TimPeters:没错,但是。尽管如此,为了完整性:@TimPeters哦,这解释了很多,我认为这将在每次使用,而不仅仅是新类型。我将不得不重写不同于的方法。