/** * */ package org.hamster.weixinmp.gson; import java.lang.reflect.Type; import org.hamster.weixinmp.constant.WxMenuBtnTypeEnum; import org.hamster.weixinmp.dao.entity.menu.WxMenuBtnEntity; import org.springframework.util.CollectionUtils; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; /** * @author grossopaforever@gmail.com * @version Jan 4, 2014 * */ public class WxMenuBtnSerializer implements JsonSerializer<WxMenuBtnEntity> { /* * (non-Javadoc) * * @see com.google.gson.JsonSerializer#serialize(java.lang.Object, * java.lang.reflect.Type, com.google.gson.JsonSerializationContext) */ public JsonElement serialize(WxMenuBtnEntity src, Type typeOfSrc, JsonSerializationContext context) { return recursiveParse(src); } public JsonObject recursiveParse(WxMenuBtnEntity parentEntity) { JsonObject parent = new JsonObject(); parent.addProperty("type", parentEntity.getType()); parent.addProperty("name", parentEntity.getName()); WxMenuBtnTypeEnum type = WxMenuBtnTypeEnum.valueOf(parentEntity .getType()); switch (type) { case CLICK: parent.addProperty("key", parentEntity.getKey()); break; case VIEW: parent.addProperty("url", parentEntity.getUrl()); break; default: break; } if (!CollectionUtils.isEmpty(parentEntity.getSubButtons())) { JsonArray children = new JsonArray(); for (WxMenuBtnEntity child : parentEntity.getSubButtons()) { children.add(recursiveParse(child)); } parent.add("sub_button", children); } return parent; } }