1
0
mirror of synced 2025-12-19 23:08:13 +08:00

修复完善菜单特别是个性化菜单的创建和删除相关代码

This commit is contained in:
Binary Wang
2017-01-17 14:45:42 +08:00
parent d81a5e39c1
commit 5018c31e60
4 changed files with 153 additions and 73 deletions

View File

@@ -8,21 +8,13 @@
*/
package me.chanjar.weixin.common.util.json;
import java.lang.reflect.Type;
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import com.google.gson.*;
import me.chanjar.weixin.common.bean.menu.WxMenu;
import me.chanjar.weixin.common.bean.menu.WxMenuButton;
import me.chanjar.weixin.common.bean.menu.WxMenuRule;
import java.lang.reflect.Type;
/**
* @author Daniel Qian
@@ -76,6 +68,18 @@ public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializ
return matchRule;
}
private WxMenuRule convertToRule(JsonObject json) {
WxMenuRule menuRule = new WxMenuRule();
menuRule.setTagId(GsonHelper.getString(json,"tag_id"));
menuRule.setSex(GsonHelper.getString(json,"sex"));
menuRule.setCountry(GsonHelper.getString(json,"country"));
menuRule.setProvince(GsonHelper.getString(json,"province"));
menuRule.setCity(GsonHelper.getString(json,"city"));
menuRule.setClientPlatformType(GsonHelper.getString(json,"client_platform_type"));
menuRule.setLanguage(GsonHelper.getString(json,"language"));
return menuRule;
}
@Override
public WxMenu deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
/*
@@ -84,8 +88,7 @@ public class WxMenuGsonAdapter implements JsonSerializer<WxMenu>, JsonDeserializ
* 查询菜单时是 { menu : { button : ... } }
*/
WxMenu menu = new WxMenu();
JsonObject menuJson = json.getAsJsonObject().get("menu").getAsJsonObject();
JsonArray buttonsJson = menuJson.get("button").getAsJsonArray();
JsonArray buttonsJson = json.getAsJsonObject().get("menu").getAsJsonObject().get("button").getAsJsonArray();
for (int i = 0; i < buttonsJson.size(); i++) {
JsonObject buttonJson = buttonsJson.get(i).getAsJsonObject();
WxMenuButton button = convertFromJson(buttonJson);