diff options
author | Nataliia Uvarova <grafinya.uvarova@gmail.com> | 2014-05-29 12:39:42 +0200 |
---|---|---|
committer | Nataliia Uvarova <grafinya.uvarova@gmail.com> | 2014-05-29 12:39:42 +0200 |
commit | 547453cac816e0821bbf69f7e40fd9dbad0af6e3 (patch) | |
tree | 84547ea1d45429d57d3dd4f351c2cccec07c4933 | |
parent | 3e3772963f1ece519efb03be835b2df681c9b182 (diff) | |
download | oslo-serialization-547453cac816e0821bbf69f7e40fd9dbad0af6e3.tar.gz |
Add kwargs to jsonutils.load(s) functions
Now jsonutils.load(s) doesn't allow to pass additional params to
underlying json.load(s) (such as 'parse_int' or 'cls'). This patch adds
kwargs to jsonutils.load(s) that are passed to json.load(s).
Change-Id: I9b032e6047b207ad3af14dadd90f207e3a9ca0e5
-rw-r--r-- | openstack/common/jsonutils.py | 8 | ||||
-rw-r--r-- | tests/unit/test_jsonutils.py | 5 |
2 files changed, 9 insertions, 4 deletions
diff --git a/openstack/common/jsonutils.py b/openstack/common/jsonutils.py index 1a35e04..e4eada8 100644 --- a/openstack/common/jsonutils.py +++ b/openstack/common/jsonutils.py @@ -168,12 +168,12 @@ def dumps(value, default=to_primitive, **kwargs): return json.dumps(value, default=default, **kwargs) -def loads(s, encoding='utf-8'): - return json.loads(strutils.safe_decode(s, encoding)) +def loads(s, encoding='utf-8', **kwargs): + return json.loads(strutils.safe_decode(s, encoding), **kwargs) -def load(fp, encoding='utf-8'): - return json.load(codecs.getreader(encoding)(fp)) +def load(fp, encoding='utf-8', **kwargs): + return json.load(codecs.getreader(encoding)(fp), **kwargs) try: diff --git a/tests/unit/test_jsonutils.py b/tests/unit/test_jsonutils.py index 90931a0..208c284 100644 --- a/tests/unit/test_jsonutils.py +++ b/tests/unit/test_jsonutils.py @@ -58,6 +58,11 @@ class JSONUtilsTestMixin(object): i18n_str = i18n_str_unicode.encode('utf-8') self.assertIsInstance(jsonutils.loads(i18n_str), six.text_type) + def test_loads_with_kwargs(self): + jsontext = u'{"foo": 3}' + result = jsonutils.loads(jsontext, parse_int=lambda x: 5) + self.assertEqual(5, result['foo']) + def test_load(self): jsontext = u'{"a": "\u0442\u044d\u0441\u0442"}' |