I am trying to loop through every value in a deeply nested/mixed list and convert any Decimal instances to string so that I can store them in mongo.
My attempt at re
You want to convert decimals to strings, but recursively apply your function to the contents of lists and the values of dictionaries, otherwise return objects unchanged? Then do that:
def strip_decimals(o):
if type(o) == Decimal:
return str(o)
elif type(o) == list:
return map(strip_decimals, o)
elif type(o) == dict:
return dict([(k, strip_decimals(v)) for k, v in o.iteritems()])
else:
return o
Results in:
[{'Payments': {'APR': '2.54',
'AppliedIds': [],
'CapCostTotal': '27900',
'IsCapped': True,
'Name': 'TestData',
'OtherFees': '0',
'Payment': '495.64',
'Program': {'Description': None, 'ProgramName': u'AST'},
'Rate': '0.0254',
'Tax': '0'}}]