add the ability to serialize uuid types

This commit is contained in:
Alexei Peters
2015-12-13 19:08:55 -08:00
committed by Honza Král
parent e23fb64b79
commit b792be3652
2 changed files with 7 additions and 0 deletions
+3
View File
@@ -2,6 +2,7 @@ try:
import simplejson as json
except ImportError:
import json
import uuid
from datetime import date, datetime
from decimal import Decimal
@@ -28,6 +29,8 @@ class JSONSerializer(object):
return data.isoformat()
elif isinstance(data, Decimal):
return float(data)
elif isinstance(data, uuid.UUID):
return str(data)
raise TypeError("Unable to serialize %r (type: %s)" % (data, type(data)))
def loads(self, s):
+4
View File
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
import sys
import uuid
from datetime import datetime
from decimal import Decimal
@@ -18,6 +19,9 @@ class TestJSONSerializer(TestCase):
raise SkipTest("Float rounding is broken in 2.6.")
self.assertEquals('{"d": 3.8}', JSONSerializer().dumps({'d': Decimal('3.8')}))
def test_uuid_serialization(self):
self.assertEquals('{"d": "00000000-0000-0000-0000-000000000003"}', JSONSerializer().dumps({'d': uuid.UUID('00000000-0000-0000-0000-000000000003')}))
def test_raises_serialization_error_on_dump_error(self):
self.assertRaises(SerializationError, JSONSerializer().dumps, object())