Search code examples
pythonjsonordereddict

Python convert OrderedDict saved as string into an actual dict


I have a Postgres db where OrderedDict has been saved as a string. I need to convert this string into json/dict so that it can be saved in a JSONField. How can I convert this string into dict?

String example -

OrderedDict([('order_id', 'xxxxxx'), ('tracking_id', 'xxxxxx'), ('bank_ref_no', 'xxxxx'), ('order_status', 'Success')])

I tried json.loads(string) but it gives a decoding error. Any solution apart from manually parsing the string?


Solution

  • You can use eval for this purpose.

    from collections import OrderedDict
    import json
    
    x = "OrderedDict([('order_id', 'xxxxxx'), ('tracking_id', 'xxxxxx'), ('bank_ref_no', 'xxxxx'), ('order_status', 'Success')])"
    
    #run string through eval and convert to dict
    dct = dict(eval(x))
    print(dct)
    

    The output will be

    {'order_id': 'xxxxxx', 'tracking_id': 'xxxxxx', 
    'bank_ref_no': 'xxxxx', 'order_status': 'Success'}