4. Custom Encoder
Step-by-Step Explanation
Example
from flask import Flask, jsonify
from flask.json import JSONEncoder
import datetime
app = Flask(__name__)
# Custom User class
class User:
def __init__(self, id, username, email, created_at):
self.id = id
self.username = username
self.email = email
self.created_at = created_at
# Custom JSON Encoder
class CustomJSONEncoder(JSONEncoder):
def default(self, obj):
if isinstance(obj, User):
return {
'id': obj.id,
'username': obj.username,
'email': obj.email,
'created_at': obj.created_at.isoformat()
}
elif isinstance(obj, datetime.datetime):
return obj.isoformat()
return super().default(obj)
# Tell Flask to use the custom encoder
app.json_encoder = CustomJSONEncoder
@app.route('/user')
def get_user():
user = User(1, 'johndoe', 'john@example.com', datetime.datetime.utcnow())
return jsonify(user)
if __name__ == '__main__':
app.run(debug=True)Explanation of the Example
Running the Example
Last updated