How to deserialize the datetime in a json object in python?

datetime, json, python

Solution

from datetime import datetime

def load_with_datetime(pairs, format='%Y-%m-%d'):
    """Load with dates"""
    d = {}
    for k, v in pairs:
        if isinstance(v, basestring):
            try:
                d[k] = datetime.strptime(v, format).date()
            except ValueError:
                d[k] = v
        else:
            d[k] = v             
    return d

dump = json.dumps(A, default = f)
json.loads(dump, object_pairs_hook=load_with_datetime)

# {u'date': datetime.date(2013, 1, 1), u'price': 100}

Problem

My original dictionary is ``` A = { 'date': datetime.date(2013, 1, 1), 'price': 100 } ``` Since `datetime.date` is not serializable, I add a default function to deal with that: ``` B = json.dumps(A, default=lambda obj:obj.isoformat() if hasattr(obj, 'isoformat') else obj) ``` My question is, how can I deserialize the `'date'` field while I use `json.loads` to convert it back to the original dictionary?

Original source

Related problems