def traverse_json(data, delimiter="/", path="", output=None):
    """
    Traverse all the items in JSON data

    :type data: dict, list, element
    :param data: JSON data

    :type delimiter: string
    :param delimiter: path delimiter for each JSON node

    :type path: string
    :param path: record the parent path on this JSON data

    :type output: dict
    :param output: record each item with full path
    """
    if output is None:
        output = {}
    if not data:
        return output
    elif isinstance(data, dict):
        for element in data:
            new_path = delimiter.join([path, str(element)])
            output = traverse_json(data[element], path=new_path, output=output)
    elif isinstance(data, list):
        for element in data:
            new_path = delimiter.join([path, str(data.index(element))])
            output = traverse_json(element, path=new_path, output=output)
    elif path:
        output[path] = data
    return output