Format pływa za pomocą standardowego modułu json

Używam standardumoduł json w python 2.6 do serializacji listy elementów pływających. Otrzymuję jednak takie wyniki:

>>> import json
>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'

Chcę, aby pływaki były formowane tylko z dwoma cyframi dziesiętnymi. Wynik powinien wyglądać następująco:

>>> json.dumps([23.67, 23.97, 23.87])
'[23.67, 23.97, 23.87]'

Próbowałem zdefiniować własną klasę kodera JSON:

class MyEncoder(json.JSONEncoder):
    def encode(self, obj):
        if isinstance(obj, float):
            return format(obj, '.2f')
        return json.JSONEncoder.encode(self, obj)

Działa to dla pojedynczego obiektu pływającego:

>>> json.dumps(23.67, cls=MyEncoder)
'23.67'

Ale nie działa dla zagnieżdżonych obiektów:

>>> json.dumps([23.67, 23.97, 23.87])
'[23.670000000000002, 23.969999999999999, 23.870000000000001]'

Nie chcę mieć zewnętrznych zależności, więc wolę trzymać się standardowego modułu json.

Jak mogę to osiągnąć?

questionAnswers(12)

yourAnswerToTheQuestion