При инициализации Eve можно указать пользовательский кодер json, как указано в документации здесь , вы можете сделать что-то вроде:
from eve.io.base import BaseJSONEncoder
class CustomJSONEncoder(BaseJSONEncoder):
...
app = Eve(settings=settings, json_encoder=CustomJSONEncoder)
Я ожидал, что внутренне результат будет:
flask.json_encoder == CustomJSONEncoder
но то, что я обнаружил в коде фляги , это:
self.data.json_encoder_class = CustomJSONEncoder
, который доступен позже с app.data.json_encoder_class
. Это приводит к тому, что если вы используете какое-либо дополнение для фляги, которое использует кодировщик, у вас не будет ожидаемых пользовательских кодировок.
Простое решение может быть:
app = Eve(settings=settings, json_encoder=CustomJSONEncoder)
app.json_encoder = CustomJSONEncoder
но мне интересно:
- Почему Ева не делает это сама?
- Есть ли причина избегать изменения стандартного кодера JSON Flask по умолчанию?
- Ева делает что-то дополнительно
data.json_encoder_class
?
- Должно ли это быть задокументировано?