简单javaBean对像转化为javascript可识别的对象的方法。初级文章

/**
  * 用于打印一个对象的属性和属性值。
  * 把DTO转换成javascript可以识别的对象。
  * @return
  */ 

 

public static String objectToPropertyStringForJSON(Object obj)throws Exception
 {
  StringBuffer  stringValue = new StringBuffer();
  Class clazz = obj.getClass();
  Map getMethodMap = getGetMethodMap(clazz);
  Iterator iter  = getMethodMap.keySet().iterator();
  stringValue.append(" { ");
  while(iter.hasNext())
  {
   String methodName = iter.next().toString();
   Method md = (Method)getMethodMap.get(methodName);
   Object value =md.invoke(obj,new Object[]{});
   stringValue.append(dropCase(methodName));
   stringValue.append(" : '");
   stringValue.append(value);
   stringValue.append("', ");
  }
  stringValue.append(" objclass : '");
  stringValue.append(obj.getClass());
  stringValue.append("'");
  stringValue.append(" } ");
  return stringValue.toString();
 }

/**
  * 取得对象GET方法Map
  * @param clazz
  * @return
  * @throws Exception
  */
 public static Map getGetMethodMap(Class clazz) throws Exception
 {
  Map getMethodMap = new HashMap();
  Method[] methods = getMethod(clazz);
  for(int i=0;i<methods.length;i++)
  {
   String name  = methods[i].getName();
   if(name.startsWith("get") && name.length()>3)
   {
    if(methods[i].getParameterTypes().length==0)
    { 
     if(!"getClass".equals(name))
     getMethodMap.put(name,methods[i]);
    }
   }
  }
  return getMethodMap;
 }

 

private static Method[] getMethod(Class clazz)
 {
  return clazz.getMethods();
 }

/**
  * 去掉方法前面的get set is开头
  * @param name
  * @return
  * @throws Exception
  */
 public static  String dropCase(String name)throws Exception
    {
        if(name.startsWith("is"))
            name = name.substring(2);
        else
        if(name.startsWith("get") || name.startsWith("set"))
            name = name.substring(3);
        else
            throw new Exception("Error parsing property name '" + name + "'.  Didn't start with 'is', 'get' or 'set'.");
        if(name.length() == 1 || name.length() > 1 && !Character.isUpperCase(name.charAt(1)))
            name = name.substring(0, 1).toLowerCase(Locale.US) + name.substring(1);
        return name;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值