Package org.hamster.weixinmp.gson

Source Code of org.hamster.weixinmp.gson.WxMenuBtnSerializer

/**
*
*/
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;
  }

}
TOP

Related Classes of org.hamster.weixinmp.gson.WxMenuBtnSerializer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.