diff options
Diffstat (limited to 'tablib/formats/_json.py')
| -rw-r--r-- | tablib/formats/_json.py | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/tablib/formats/_json.py b/tablib/formats/_json.py index 777040a..bbd2c96 100644 --- a/tablib/formats/_json.py +++ b/tablib/formats/_json.py @@ -2,29 +2,34 @@ """ Tablib - JSON Support """ +import decimal +import json +from uuid import UUID import tablib -import sys -from tablib.packages import omnijson as json - title = 'json' extensions = ('json', 'jsn') -def date_handler(obj): - return obj.isoformat() if hasattr(obj, 'isoformat') else obj +def serialize_objects_handler(obj): + if isinstance(obj, decimal.Decimal) or isinstance(obj, UUID): + return str(obj) + elif hasattr(obj, 'isoformat'): + return obj.isoformat() + else: + return obj def export_set(dataset): """Returns JSON representation of Dataset.""" - return json.dumps(dataset.dict, default=date_handler) + return json.dumps(dataset.dict, default=serialize_objects_handler) def export_book(databook): """Returns JSON representation of Databook.""" - return json.dumps(databook._package(), default=date_handler) + return json.dumps(databook._package(), default=serialize_objects_handler) def import_set(dset, in_stream): |
