Создание собственного JSONEncoder

Я запускаю Python 2.7 и пытаюсь создать собственный подкласс FloatEncoder для JSONEncoder. Я следил за многими примерами, такими как this , но ни один из них не работает. Вот мой класс FloatEncoder:

class FloatEncoder(JSONEncoder):
    def _iterencode(self, obj, markers=None):
         if isinstance(obj, float):
            return (str(obj) for obj in [obj])
        return super(FloatEncoder, self)._iterencode(obj, markers)

И здесь я вызываю json.dumps:

with patch("utils.fileio.FloatEncoder") as float_patch:
        for val,res in ((.00123456,'0.0012'),(.00009,'0.0001'),(0.99999,'1.0000'),({'hello':1.00001,'world':[True,1.00009]},'{"world": [true, 1.0001], "hello": 1.0000}')): 
            untrusted = dumps(val, cls=FloatEncoder)
            self.assertTrue(float_patch._iterencode.called)
            self.assertEqual(untrusted, res)

Первое утверждение не выполняется, что означает, что _iterencode не выполняется. Прочитав документацию JSON, я попытался переопределить метод default (), но он также не вызывался.

7
задан Community 23 May 2017 в 11:55
поделиться