Parses a json query string into its parts

    args:
        qry_str: query string
        params: variables passed into the string

def parse_json_qry(qry_str):
    """ Parses a json query string into its parts

    args:
        qry_str: query string
        params: variables passed into the string
    """

    def param_analyzer(param_list):
        rtn_list = []
        for param in param_list:
            parts = param.strip().split("=")
            try:
                rtn_list.append(\
                        JsonQryProcessor[parts[0].strip().lower()](parts[1]))
            except IndexError:
                rtn_list.append(\
                        JsonQryProcessor[parts[0].strip().lower()]())
        return rtn_list

    def part_analyzer(part, idx):
        nonlocal dallor, asterick, question_mark
        if part == "$":
            dallor = idx
            return part
        elif part == "*":
            asterick = idx
            return part
        elif part == "?":
            question_mark = idx
            return part
        elif part.startswith("="):
            return part
        return cssparse(part)[0]
    # pdb.set_trace()
    main_parts = qry_str.split("|")
    or_parts = main_parts.pop(0).strip()
    params = param_analyzer(main_parts)
    rtn_list = []
    for or_part in [item.strip()
                    for item in or_parts.split(",")
                    if item.strip()]:
        dallor, asterick, question_mark = None, None, None
        dot_parts = or_part.split(".")
        rtn_list.append(([part_analyzer(part, i) \
                            for i, part in enumerate(dot_parts)],
                          dallor,
                          asterick,
                          question_mark))
    return {"qry_parts": rtn_list, "params": params}