def build_filters(filter_definitions):
    """
    Build function to filter jsons.

    Filter definitions is a list of strings in format: key:value[:modifier]

    :param filter_definitions: list of strings
    :return: function
    """
    filters = []

    if not filter_definitions:
        return lambda item: bool(item)

    modifiers = {
        'i': int,
        'f': float,
        's': str,
        'b': bool,
    }
    for definition in filter_definitions:
        try:
            key, value, modifier = definition.split(':', 2)
            modifier = modifiers.get(modifier, None)
        except ValueError:
            key, value = definition.split(':', 1)
            modifier = str

        if not modifier:
            modifier = lambda item: item
        filters.append(lambda data: key in data and data[key] == modifier(value))

    def _filter(item):
        return item and all(flt(item) for flt in filters)

    return _filter