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 inspect
|
||||||
import itertools
|
import itertools
|
||||||
import sys
|
import sys
|
||||||
|
import uuid
|
||||||
|
|
||||||
is_simplejson = False
|
is_simplejson = False
|
||||||
if sys.version_info < (2, 7):
|
if sys.version_info < (2, 7):
|
||||||
|
@ -111,6 +112,9 @@ def to_primitive(value, convert_instances=False, convert_datetime=True,
|
||||||
else:
|
else:
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
if isinstance(value, uuid.UUID):
|
||||||
|
return six.text_type(value)
|
||||||
|
|
||||||
# value of itertools.count doesn't get caught by nasty_type_tests
|
# value of itertools.count doesn't get caught by nasty_type_tests
|
||||||
# and results in infinite loop when list(value) is called.
|
# and results in infinite loop when list(value) is called.
|
||||||
if type(value) == itertools.count:
|
if type(value) == itertools.count:
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
import collections
|
import collections
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
|
import uuid
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
import netaddr
|
import netaddr
|
||||||
|
@ -68,6 +69,11 @@ class JSONUtilsTestMixin(object):
|
||||||
|
|
||||||
self.assertEqual(expected, fp.getvalue())
|
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):
|
def test_loads(self):
|
||||||
self.assertEqual({'a': 'b'}, jsonutils.loads('{"a": "b"}'))
|
self.assertEqual({'a': 'b'}, jsonutils.loads('{"a": "b"}'))
|
||||||
|
|
||||||
|
@ -135,6 +141,11 @@ class ToPrimitiveTestCase(test_base.BaseTestCase):
|
||||||
self.assertEqual(jsonutils.to_primitive(x),
|
self.assertEqual(jsonutils.to_primitive(x),
|
||||||
'1920-02-03T04:05:06.000007')
|
'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):
|
def test_datetime_preserve(self):
|
||||||
x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7)
|
x = datetime.datetime(1920, 2, 3, 4, 5, 6, 7)
|
||||||
self.assertEqual(jsonutils.to_primitive(x, convert_datetime=False), x)
|
self.assertEqual(jsonutils.to_primitive(x, convert_datetime=False), x)
|
||||||
|
|
Loading…
Reference in New Issue