summaryrefslogtreecommitdiff
path: root/tablib/formats/_json.py
diff options
context:
space:
mode:
Diffstat (limited to 'tablib/formats/_json.py')
-rw-r--r--tablib/formats/_json.py19
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):