add the ability to serialize uuid types
This commit is contained in:
committed by
Honza Král
parent
e23fb64b79
commit
b792be3652
@@ -2,6 +2,7 @@ try:
|
|||||||
import simplejson as json
|
import simplejson as json
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import json
|
import json
|
||||||
|
import uuid
|
||||||
from datetime import date, datetime
|
from datetime import date, datetime
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
|
||||||
@@ -28,6 +29,8 @@ class JSONSerializer(object):
|
|||||||
return data.isoformat()
|
return data.isoformat()
|
||||||
elif isinstance(data, Decimal):
|
elif isinstance(data, Decimal):
|
||||||
return float(data)
|
return float(data)
|
||||||
|
elif isinstance(data, uuid.UUID):
|
||||||
|
return str(data)
|
||||||
raise TypeError("Unable to serialize %r (type: %s)" % (data, type(data)))
|
raise TypeError("Unable to serialize %r (type: %s)" % (data, type(data)))
|
||||||
|
|
||||||
def loads(self, s):
|
def loads(self, s):
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import sys
|
import sys
|
||||||
|
import uuid
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
@@ -18,6 +19,9 @@ class TestJSONSerializer(TestCase):
|
|||||||
raise SkipTest("Float rounding is broken in 2.6.")
|
raise SkipTest("Float rounding is broken in 2.6.")
|
||||||
self.assertEquals('{"d": 3.8}', JSONSerializer().dumps({'d': Decimal('3.8')}))
|
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):
|
def test_raises_serialization_error_on_dump_error(self):
|
||||||
self.assertRaises(SerializationError, JSONSerializer().dumps, object())
|
self.assertRaises(SerializationError, JSONSerializer().dumps, object())
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user