Java解析微信公众号菜单列表

因为是新手,所以写的不是很好,见谅。

/**
     * 将微信公众号菜单列表由JSONArray格式解析为WeChatMenu对象, 并存到数据库里
     *
     * @param wechatMenuJsonArray 微信公众号菜单列表,格式为JSONArray
     */
    private void parseWechatMenuJsonArray(JSONArray wechatMenuJsonArray) {
        int length = wechatMenuJsonArray.length();
        String menuName;
        String menuType;
        Integer wechatId = WechatMenuAct.wechatId;
        try {
            for (int i = 0; i < length; i++) {
                WechatMenu wechatMenu = new WechatMenu();

                JSONObject buttonJsonObject = (JSONObject) wechatMenuJsonArray.get(i);
                wechatMenu.setMenuName((String) buttonJsonObject.get("name"));
                wechatMenu.setSiteId(WechatMenuAct.siteId);
                wechatMenu.setWechat(wechatMng.findById(wechatId));
                manager.save(wechatMenu);
                // 如果该一级菜单有子菜单,获取器子菜单
                if (buttonJsonObject.has("sub_button")) {
                    JSONObject subButtonJsonObject = (JSONObject) buttonJsonObject.get("sub_button");
                    JSONArray subButtonJsonArray = (JSONArray) subButtonJsonObject.get("list");

                    int subButtonAmount = subButtonJsonArray.length();
                    WechatMenu[] wechatMenus = new WechatMenu[subButtonAmount];
                    for (int j = 0; j < subButtonAmount; j++) {
                        JSONObject subMenuJsonObject = (JSONObject) subButtonJsonArray.get(j);
                        menuName = (String) subMenuJsonObject.get("name");
                        menuType = (String) subMenuJsonObject.get("type");
                        wechatMenus[j] = new WechatMenu();
                        wechatMenus[j].setMenuName(menuName);
                        if ("click".equals(menuType)) {
                            wechatMenus[j].setMenuType(1);
                            wechatMenus[j].setKey((String) subMenuJsonObject.get("key"));
                        } else if ("view".equals(menuType)) {
                            wechatMenus[j].setMenuType(2);
                            String url = trimUrl((String) subMenuJsonObject.get("url"));
                            wechatMenus[j].setUrl(url);
                        } else {
                            wechatMenus[j].setMenuType(3);
                            String url = trimUrl((String) subMenuJsonObject.get("url"));
                            wechatMenus[j].setUrl(url);
                            wechatMenus[j].setMiniprogramUrl((String) subMenuJsonObject.get("pagepath"));
                            wechatMenus[j].setAppid((String) subMenuJsonObject.get("appid"));
                        }
                        wechatMenus[j].setSiteId(WechatMenuAct.siteId);
                        wechatMenus[j].setWechat(wechatMng.findById(wechatId));
                        wechatMenus[j].setParent(wechatMenu);
                        // 将数据存到数据库中
                        manager.save(wechatMenus[j]);
                    }
                } else {
                    // 如果该一级菜单没有子菜单
                    menuName = (String) buttonJsonObject.get("name");
                    wechatMenu.setMenuName(menuName);
                    menuType = (String) buttonJsonObject.get("type");
                    if ("click".equals(menuType)) {
                        wechatMenu.setMenuType(1);
                        wechatMenu.setKey((String) buttonJsonObject.get("key"));
                    } else if ("view".equals(menuType)) {
                        wechatMenu.setMenuType(2);
                        String url = trimUrl((String) buttonJsonObject.get("url"));
                        wechatMenu.setUrl((url));
                    } else {
                        wechatMenu.setMenuType(3);
                        String url = trimUrl((String) buttonJsonObject.get("url"));
                        wechatMenu.setUrl(url);
                        wechatMenu.setMiniprogramUrl((String) buttonJsonObject.get("pagepath"));
                        wechatMenu.setAppid((String) buttonJsonObject.get("appid"));
                    }
                    wechatMenu.setSiteId(WechatMenuAct.siteId);
                    wechatMenu.setWechat(wechatMng.findById(wechatId));
                    // 将数据存到数据库中
                    manager.save(wechatMenu);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

方法的参数列表中wechatMenuJsonArray是根据请求微信公众号接口获取的(经过了调整),其格式如下:

[
    {
        "name": "百度", 
        "type": "view", 
        "url": "http://baidu.com"
    }, 
    {
        "name": "一级菜单", 
        "sub_button": {
            "list": [
                {
                    "name": "知乎", 
                    "type": "view", 
                    "url": "http://zhihu.com"
                }, 
                {
                    "pagepath": "pages/lunar/index", 
                    "appid": "wx286b93c14bbf93aa", 
                    "name": "万年历", 
                    "type": "miniprogram", 
                    "url": "http://mp.weixin.qq.com"
                }, 
                {
                    "name": "赞一下我们", 
                    "type": "click", 
                    "key": "V1001_GOOD"
                }
            ]
        }
    }
]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九成宫醴泉铭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值