Converts the inputted JSON object to a python value.
    
    :param      json_obj | <variant>

def json2py(json_obj):
    """
    Converts the inputted JSON object to a python value.
    
    :param      json_obj | <variant>
    """
    for key, value in json_obj.items():
        if type(value) not in (str, unicode):
            continue

        # restore a datetime
        if re.match('^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}:\d+$', value):
            value = datetime.datetime.strptime(value, '%Y-%m-%d %H:%M:%S:%f')
        elif re.match('^\d{4}-\d{2}-\d{2}$', value):
            year, month, day = map(int, value.split('-'))
            value = datetime.date(year, month, day)
        elif re.match('^\d{2}:\d{2}:\d{2}:\d+$', value):
            hour, minute, second, micro = map(int, value.split(':'))
            value = datetime.time(hour, minute, second, micro)
        else:
            found = False
            for decoder in _decoders:
                success, new_value = decoder(value)
                if success:
                    value = new_value
                    found = True
                    break

            if not found:
                continue

        json_obj[key] = value
    return json_obj