Looks up a xj path in the data_obj.

    :param dict|list data_obj: An object to look into.
    :param str xj_path: A path to extract data from.
    :param type force_type: A type that excepted to be.
    :return: Returns result or throws an exception if value is not found.

def strict_path_lookup(data_obj, xj_path, force_type=None):
    """Looks up a xj path in the data_obj.

    :param dict|list data_obj: An object to look into.
    :param str xj_path: A path to extract data from.
    :param type force_type: A type that excepted to be.
    :return: Returns result or throws an exception if value is not found.
    """

    value, exists = path_lookup(data_obj, xj_path)
    if exists:
        if force_type is not None:
            if not isinstance(value, force_type):
                raise XJPathError('Found value is a wrong type',
                                  (xj_path, force_type))
        return value
    else:
        raise XJPathError('Path does not exist', (xj_path,))