summaryrefslogtreecommitdiff
path: root/tablib/formats/_json.py
diff options
context:
space:
mode:
authorJean Jordaan <jean.jordaan@gmail.com>2019-03-03 13:29:21 +0700
committerGitHub <noreply@github.com>2019-03-03 13:29:21 +0700
commitaddaa090efb4d4beacb2bd2cc6dbdb7e158fa2a9 (patch)
treede3b532ed49a0d1e8a2e333b549b129d534bff91 /tablib/formats/_json.py
parentcd67a63b434c33430d8fd32d6d15027b42811d9d (diff)
parent79dc77de49b8375d616a6cabb4503feb990bb51d (diff)
downloadtablib-addaa090efb4d4beacb2bd2cc6dbdb7e158fa2a9.tar.gz
Merge branch 'master' into master
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):