diff options
author | Ezio Melotti <none@none> | 2011-04-13 04:10:13 (GMT) |
---|---|---|
committer | Ezio Melotti <none@none> | 2011-04-13 04:10:13 (GMT) |
commit | d210aa1ad9329661625ca5f0b6754f84ffc25021 (patch) | |
tree | 5d815eb2189614154b9c6cd37c32215fd9281dcc | |
parent | 42368f9b0cd9e9b00d617e7a52619b82b0101b3f (diff) | |
download | cpython-d210aa1ad9329661625ca5f0b6754f84ffc25021.zip cpython-d210aa1ad9329661625ca5f0b6754f84ffc25021.tar.gz cpython-d210aa1ad9329661625ca5f0b6754f84ffc25021.tar.bz2 |
#9233: Fix json.loads({}) to return a dict (instead of a list), when _json is not available.
-rw-r--r-- | Lib/json/decoder.py | 6 | ||||
-rw-r--r-- | Lib/json/tests/test_decode.py | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/Lib/json/decoder.py b/Lib/json/decoder.py index 7b3d7d5..12fa815 100644 --- a/Lib/json/decoder.py +++ b/Lib/json/decoder.py @@ -161,6 +161,12 @@ def JSONObject(s_and_end, strict, scan_once, object_hook, object_pairs_hook, nextchar = s[end:end + 1] # Trivial empty object if nextchar == '}': + if object_pairs_hook is not None: + result = object_pairs_hook(pairs) + return result, end + pairs = {} + if object_hook is not None: + pairs = object_hook(pairs) return pairs, end + 1 elif nextchar != '"': raise ValueError(errmsg("Expecting property name", s, end)) diff --git a/Lib/json/tests/test_decode.py b/Lib/json/tests/test_decode.py index 74d886a..bf65e46 100644 --- a/Lib/json/tests/test_decode.py +++ b/Lib/json/tests/test_decode.py @@ -16,6 +16,11 @@ class TestDecode(TestCase): self.assertTrue(isinstance(rval, float)) self.assertEqual(rval, 1.0) + def test_empty_objects(self): + self.assertEqual(json.loads('{}'), {}) + self.assertEqual(json.loads('[]'), []) + self.assertEqual(json.loads('""'), "") + def test_object_pairs_hook(self): s = '{"xkd":1, "kcw":2, "art":3, "hxm":4, "qrt":5, "pad":6, "hoy":7}' p = [("xkd", 1), ("kcw", 2), ("art", 3), ("hxm", 4), |