Search in sources :

Example 1 with WxMenu

use of me.chanjar.weixin.common.bean.WxMenu in project weixin-java-tools by chanjarster.

the class WxMenuGsonAdapter method deserialize.

public WxMenu deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
    /*
     * 操蛋的微信
     * 创建菜单时是 { button : ... }
     * 查询菜单时是 { menu : { button : ... } }
     */
    WxMenu menu = new WxMenu();
    JsonObject menuJson = json.getAsJsonObject().get("menu").getAsJsonObject();
    JsonArray buttonsJson = menuJson.get("button").getAsJsonArray();
    for (int i = 0; i < buttonsJson.size(); i++) {
        JsonObject buttonJson = buttonsJson.get(i).getAsJsonObject();
        WxMenu.WxMenuButton button = convertFromJson(buttonJson);
        menu.getButtons().add(button);
        if (buttonJson.get("sub_button") == null || buttonJson.get("sub_button").isJsonNull()) {
            continue;
        }
        JsonArray sub_buttonsJson = buttonJson.get("sub_button").getAsJsonArray();
        for (int j = 0; j < sub_buttonsJson.size(); j++) {
            JsonObject sub_buttonJson = sub_buttonsJson.get(j).getAsJsonObject();
            button.getSubButtons().add(convertFromJson(sub_buttonJson));
        }
    }
    return menu;
}
Also used : JsonArray(com.google.gson.JsonArray) WxMenu(me.chanjar.weixin.common.bean.WxMenu) JsonObject(com.google.gson.JsonObject)

Example 2 with WxMenu

use of me.chanjar.weixin.common.bean.WxMenu in project weixin-java-tools by chanjarster.

the class WxMenuGsonAdapter method serialize.

public JsonElement serialize(WxMenu menu, Type typeOfSrc, JsonSerializationContext context) {
    JsonObject json = new JsonObject();
    JsonArray buttonArray = new JsonArray();
    for (WxMenu.WxMenuButton button : menu.getButtons()) {
        JsonObject buttonJson = convertToJson(button);
        buttonArray.add(buttonJson);
    }
    json.add("button", buttonArray);
    if (menu.getMatchRule() != null) {
        Gson gson = new Gson();
        json.add("matchrule", gson.toJsonTree(menu.getMatchRule()));
    }
    return json;
}
Also used : JsonArray(com.google.gson.JsonArray) WxMenu(me.chanjar.weixin.common.bean.WxMenu) JsonObject(com.google.gson.JsonObject) Gson(com.google.gson.Gson)

Example 3 with WxMenu

use of me.chanjar.weixin.common.bean.WxMenu in project weixin-java-tools by chanjarster.

the class WxMpMenuAPITest method getMenu.

@DataProvider(name = "menu")
public Object[][] getMenu() {
    WxMenu menu = new WxMenu();
    WxMenuButton button1 = new WxMenuButton();
    button1.setType(WxConsts.BUTTON_CLICK);
    button1.setName("今日歌曲");
    button1.setKey("V1001_TODAY_MUSIC");
    WxMenuButton button2 = new WxMenuButton();
    button2.setType(WxConsts.BUTTON_CLICK);
    button2.setName("歌手简介");
    button2.setKey("V1001_TODAY_SINGER");
    WxMenuButton button3 = new WxMenuButton();
    button3.setName("菜单");
    menu.getButtons().add(button1);
    menu.getButtons().add(button2);
    menu.getButtons().add(button3);
    WxMenuButton button31 = new WxMenuButton();
    button31.setType(WxConsts.BUTTON_VIEW);
    button31.setName("搜索");
    button31.setUrl("http://www.soso.com/");
    WxMenuButton button32 = new WxMenuButton();
    button32.setType(WxConsts.BUTTON_VIEW);
    button32.setName("视频");
    button32.setUrl("http://v.qq.com/");
    WxMenuButton button33 = new WxMenuButton();
    button33.setType(WxConsts.BUTTON_CLICK);
    button33.setName("赞一下我们");
    button33.setKey("V1001_GOOD");
    button3.getSubButtons().add(button31);
    button3.getSubButtons().add(button32);
    button3.getSubButtons().add(button33);
    return new Object[][] { new Object[] { menu } };
}
Also used : WxMenu(me.chanjar.weixin.common.bean.WxMenu) WxMenuButton(me.chanjar.weixin.common.bean.WxMenu.WxMenuButton) DataProvider(org.testng.annotations.DataProvider)

Example 4 with WxMenu

use of me.chanjar.weixin.common.bean.WxMenu in project weixin-java-tools by chanjarster.

the class WxMenuAPITest method getMenu.

@DataProvider(name = "menu")
public Object[][] getMenu() {
    WxMenu menu = new WxMenu();
    WxMenuButton button1 = new WxMenuButton();
    button1.setType(WxConsts.BUTTON_CLICK);
    button1.setName("今日歌曲");
    button1.setKey("V1001_TODAY_MUSIC");
    WxMenuButton button2 = new WxMenuButton();
    button2.setType(WxConsts.BUTTON_CLICK);
    button2.setName("歌手简介");
    button2.setKey("V1001_TODAY_SINGER");
    WxMenuButton button3 = new WxMenuButton();
    button3.setName("菜单");
    menu.getButtons().add(button1);
    menu.getButtons().add(button2);
    menu.getButtons().add(button3);
    WxMenuButton button31 = new WxMenuButton();
    button31.setType(WxConsts.BUTTON_VIEW);
    button31.setName("搜索");
    button31.setUrl("http://www.soso.com/");
    WxMenuButton button32 = new WxMenuButton();
    button32.setType(WxConsts.BUTTON_VIEW);
    button32.setName("视频");
    button32.setUrl("http://v.qq.com/");
    WxMenuButton button33 = new WxMenuButton();
    button33.setType(WxConsts.BUTTON_CLICK);
    button33.setName("赞一下我们");
    button33.setKey("V1001_GOOD");
    button3.getSubButtons().add(button31);
    button3.getSubButtons().add(button32);
    button3.getSubButtons().add(button33);
    return new Object[][] { new Object[] { menu } };
}
Also used : WxMenu(me.chanjar.weixin.common.bean.WxMenu) WxMenuButton(me.chanjar.weixin.common.bean.WxMenu.WxMenuButton) DataProvider(org.testng.annotations.DataProvider)

Example 5 with WxMenu

use of me.chanjar.weixin.common.bean.WxMenu in project weixin-java-tools by chanjarster.

the class WxMpMenuAPITest method testCreateMenu2.

@Test
public void testCreateMenu2() throws WxErrorException {
    String a = "{\n" + "  \"menu\": {\n" + "    \"button\": [\n" + "      {\n" + "        \"type\": \"click\",\n" + "        \"name\": \"今日歌曲\",\n" + "        \"key\": \"V1001_TODAY_MUSIC\"\n" + "      },\n" + "      {\n" + "        \"type\": \"click\",\n" + "        \"name\": \"歌手简介\",\n" + "        \"key\": \"V1001_TODAY_SINGER\"\n" + "      },\n" + "      {\n" + "        \"name\": \"菜单\",\n" + "        \"sub_button\": [\n" + "          {\n" + "            \"type\": \"view\",\n" + "            \"name\": \"搜索\",\n" + "            \"url\": \"http://www.soso.com/\"\n" + "          },\n" + "          {\n" + "            \"type\": \"view\",\n" + "            \"name\": \"视频\",\n" + "            \"url\": \"http://v.qq.com/\"\n" + "          },\n" + "          {\n" + "            \"type\": \"click\",\n" + "            \"name\": \"赞一下我们\",\n" + "            \"key\": \"V1001_GOOD\"\n" + "          }\n" + "        ]\n" + "      }\n" + "    ]\n" + "  }\n" + "}";
    WxMenu menu = WxMenu.fromJson(a);
    System.out.println(menu.toJson());
    wxService.menuCreate(menu);
}
Also used : WxMenu(me.chanjar.weixin.common.bean.WxMenu) Test(org.testng.annotations.Test)

Aggregations

WxMenu (me.chanjar.weixin.common.bean.WxMenu)5 JsonArray (com.google.gson.JsonArray)2 JsonObject (com.google.gson.JsonObject)2 WxMenuButton (me.chanjar.weixin.common.bean.WxMenu.WxMenuButton)2 DataProvider (org.testng.annotations.DataProvider)2 Gson (com.google.gson.Gson)1 Test (org.testng.annotations.Test)1