diff --git a/flask/json.py b/flask/json.py index f25b11b1..717eb2ab 100644 --- a/flask/json.py +++ b/flask/json.py @@ -8,6 +8,7 @@ :copyright: (c) 2012 by Armin Ronacher. :license: BSD, see LICENSE for more details. """ +import uuid from datetime import datetime from .globals import current_app, request @@ -30,9 +31,9 @@ __all__ = ['dump', 'dumps', 'load', 'loads', 'htmlsafe_dump', class JSONEncoder(_json.JSONEncoder): """The default Flask JSON encoder. This one extends the default simplejson - encoder by also supporting ``datetime`` objects as well as ``Markup`` - objects which are serialized as RFC 822 datetime strings (same as the HTTP - date format). In order to support more data types override the + encoder by also supporting ``datetime`` objects, ``UUID`` as well as + ``Markup`` objects which are serialized as RFC 822 datetime strings (same + as the HTTP date format). In order to support more data types override the :meth:`default` method. """ @@ -55,6 +56,8 @@ class JSONEncoder(_json.JSONEncoder): """ if isinstance(o, datetime): return http_date(o) + if isinstance(o, uuid.UUID): + return str(o) if hasattr(o, '__html__'): return unicode(o.__html__()) return _json.JSONEncoder.default(self, o)