code: public GetMenuResponse getMenu() {
          GetMenuResponse response;
          LOG.debug("获取菜单信息.....");
          String url = BASE_API_URL + "cgi-bin/menu/get?access_token=#";
  
          BaseResponse r = executeGet(url);
          if (isSuccess(r.getErrcode())) {
              JSONObject jsonObject = JSONUtil.getJSONFromString(r.getErrmsg());
              //通过jsonpath不断修改type的值，才能正常解析- -
              List buttonList = (List) JSONPath.eval(jsonObject, "$.menu.button");
              if (CollectionUtil.isNotEmpty(buttonList)) {
                  for (Object button : buttonList) {
                      List subList = (List) JSONPath.eval(button, "$.sub_button");
                      if (CollectionUtil.isNotEmpty(subList)) {
                          for (Object sub : subList) {
                              Object type = JSONPath.eval(sub, "$.type");
                              JSONPath.set(sub, "$.type", type.toString().toUpperCase());
                          }
                      } else {
                          Object type = JSONPath.eval(button, "$.type");
                          JSONPath.set(button, "$.type", type.toString().toUpperCase());
                      }
                  }
              }
              response = JSONUtil.toBean(jsonObject.toJSONString(), GetMenuResponse.class);
          } else {
              response = JSONUtil.toBean(r.toJsonString(), GetMenuResponse.class);
          }
          return response;
      }
docs: 获取所有菜单
  
  @return 菜单列表对象