edit: this answer is now too old for Flask versions 2.3+.
for those newer versions, instead customize json_provider_class
; reference: https://flask.palletsprojects.com/en/2.2.x/api/?highlight=json_encoder#flask.Flask.json_provider_class
Following this snippet you can do this:
from flask.json import JSONEncoder
from datetime import date
class CustomJSONEncoder(JSONEncoder):
def default(self, obj):
try:
if isinstance(obj, date):
return obj.isoformat()
iterable = iter(obj)
except TypeError:
pass
else:
return list(iterable)
return JSONEncoder.default(self, obj)
app = Flask(__name__)
app.json_encoder = CustomJSONEncoder
Route:
import datetime as dt
@app.route("https://stackoverflow.com/", methods=['GET'])
def index():
now = dt.datetime.now()
return jsonify({'now': now})