diff --git a/tests/unit/base/test_serialize.py b/tests/unit/base/test_serialize.py index e7a60f3487..8717aa1535 100644 --- a/tests/unit/base/test_serialize.py +++ b/tests/unit/base/test_serialize.py @@ -107,3 +107,18 @@ def test_list(self): ] actual = serialize.prefixed_collapsible_map(value, 'Prefix') self.assertEqual({}, actual) + + +class ObjectTestCase(unittest.TestCase): + def test_object(self): + actual = serialize.object({'twilio': 'rocks'}) + self.assertEqual('{"twilio": "rocks"}', actual) + + def test_list(self): + actual = serialize.object(['twilio', 'rocks']) + self.assertEqual('["twilio", "rocks"]', actual) + + def test_does_not_change_other_types(self): + actual = serialize.object('{"attribute":"value"}') + self.assertEqual('{"attribute":"value"}', actual) + diff --git a/twilio/base/serialize.py b/twilio/base/serialize.py index e4acff959b..a565dfdfbc 100644 --- a/twilio/base/serialize.py +++ b/twilio/base/serialize.py @@ -1,4 +1,5 @@ import datetime +import json from twilio.base import values @@ -52,3 +53,13 @@ def flatten_dict(d, result={}, prv_keys=[]): return {'{}.{}'.format(prefix, k): v for k, v in flattened.items()} return {} + + +def object(obj): + """ + Return a jsonified string represenation of obj if obj is jsonifiable else + return obj untouched + """ + if isinstance(obj, dict) or isinstance(obj, list): + return json.dumps(obj) + return obj