jsonutils: support UUID encoding
Change-Id: I2c864f793b4ee6136442b678380bf21f732be643
This commit is contained in:
parent
2c244b288e
commit
73f7155af2
|
@ -37,6 +37,7 @@ import functools
|
|||
import inspect
|
||||
import itertools
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
is_simplejson = False
|
||||
if sys.version_info < (2, 7):
|
||||
|
@ -111,6 +112,9 @@ def to_primitive(value, convert_instances=False, convert_datetime=True,
|
|||
else:
|
||||
return value
|
||||
|
||||
if isinstance(value, uuid.UUID):
|
||||
return six.text_type(value)
|
||||
|
||||
# value of itertools.count doesn't get caught by nasty_type_tests
|
||||
# and results in infinite loop when list(value) is called.
|
||||
if type(value) == itertools.count:
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
import collections
|
||||
import datetime
|
||||
import json
|
||||
import uuid
|
||||
|
||||
import mock
|
||||
import netaddr
|
||||
|
@ -68,6 +69,11 @@ class JSONUtilsTestMixin(object):
|
|||
|
||||
self.assertEqual(expected, fp.getvalue())
|
||||
|
||||
def test_dumps_uuid(self):
|
||||
self.assertEqual('"87edfaf4-9bff-11e4-82bd-b7b4e88d3780"',
|
||||
jsonutils.dumps(
|
||||
uuid.UUID("87edfaf49bff11e482bdb7b4e88d3780")))
|
||||
|
||||
def test_loads(self):
|
||||
self.assertEqual({'a': 'b'}, jsonutils.loads('{"a": "b"}'))
|
||||
|
||||
|
@ -135,6 +141,11 @@ class ToPrimitiveTestCase(test_base.BaseTestCase):
|
|||
self.assertEqual(jsonutils.to_primitive(x),
|
||||
'1920-02-03T04:05:06.000007')
|
||||
|
||||
def test_uuid(self):
|
||||
x = uuid.uuid4()
|
||||
self.assertEqual(jsonutils.to_primitive(x),
|
||||
six.text_type(x))
|
||||
|
||||
def test_datetime_preserve(self):
|
||||
x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7)
|
||||
self.assertEqual(jsonutils.to_primitive(x, convert_datetime=False), x)
|
||||
|
|
Loading…
Reference in New Issue