Десятичное форматирование Flask Restless JSON

Я использую Flask-Restless 0.17 для API. API имеет несколько полей, которые являются десятичными. Я могу успешно вернуть десятичные дроби, установив simplejson, как описано здесь: https://stackoverflow.com/a/15224186/1753891 .

Однако, когда у меня есть десятичное поле, равное 0, значение находится в экспоненциальном представлении, таком как 0E-8. Вместо этого я хотел бы вернуть 0.00000000.

Я пытаюсь что-то вроде этого, но не могу заставить его работать. 0 по-прежнему возвращается в экспоненциальном представлении.

class DecimalJSONEncoder(json.JSONEncoder):
    # Try to format the decimal
    # EDIT: but am now realizing that this doesn't work
    # It was serializing the decimal at all because I had 
    # simplejson installed.
    def default(self, o):
        if isinstance(o, decimal.Decimal):
            return format(str(o), '.8f')
        return super(DecimalJSONEncoder, self).default(o)


def init_app(app):
    # .....
    # Use the Flask-Restless postprocessor to format.
    def postprocesor(result, **kw):
        json.dumps(result, cls=DecimalJSONEncoder)

Как я могу заставить десятичные дроби быть 0.00000000, когда они равны нулю?


person duffn    schedule 13.06.2016    source источник