Skip to content

Commit

Permalink
Add an example for using a custom json encoder with media handlers.
Browse files Browse the repository at this point in the history
  • Loading branch information
maxking committed Mar 6, 2022
1 parent 82ebcba commit d40da44
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions falcon/media/json.py
Expand Up @@ -94,6 +94,38 @@ class JSONHandler(BaseHandler):
),
)
You can also override the JSONEncoder used by using a custom Encoder by
updating the media handlers for ``application/json`` type::
import json
from datetime import datetime
from functools import partial
import falcon
from falcon import meda
class DatetimeEncoder(json.JSONEncoder):
\"\"\"Json Encoder that supports datetime objects.\"\"\"
def default(self, obj):
if isinstance(obj, datetime):
return obj.isoformat()
super().default(obj)
app = falcon.App()
json_handler = media.JSONHandler(
dumps=partial(json.dumps, cls=DatetimeEncoder),
loads=partial(json.loads, cls=DatetimeEncoder),
)
extra_handlers = {
'application/json': json_handler,
}
app.req_options.media_handlers.update(extra_handlers)
app.resp_options.media_handlers.update(extra_handlers)
Keyword Arguments:
dumps (func): Function to use when serializing JSON responses.
loads (func): Function to use when deserializing JSON requests.
Expand Down

0 comments on commit d40da44

Please sign in to comment.