utils: teach our json serializer to handle more types (#1907)

Namely datetime.time and numpy.bool_

Refs: #1900
Refs: #1903
This commit is contained in:
Riccardo Magliocchetti
2017-01-05 18:56:07 +01:00
committed by Maxime Beauchemin
parent c2d29fb54b
commit e3b296c558
2 changed files with 52 additions and 25 deletions

View File

@@ -5,7 +5,7 @@ from __future__ import print_function
from __future__ import unicode_literals
from builtins import object
from datetime import date, datetime
from datetime import date, datetime, time
import decimal
import functools
import json
@@ -216,6 +216,8 @@ def base_json_conv(obj):
if isinstance(obj, numpy.int64):
return int(obj)
elif isinstance(obj, numpy.bool_):
return bool(obj)
elif isinstance(obj, set):
return list(obj)
elif isinstance(obj, decimal.Decimal):
@@ -239,6 +241,8 @@ def json_iso_dttm_ser(obj):
obj = obj.isoformat()
elif isinstance(obj, date):
obj = obj.isoformat()
elif isinstance(obj, time):
obj = obj.isoformat()
else:
raise TypeError(
"Unserializable object {} of type {}".format(obj, type(obj))