将一个对象转化为类json风格字符串的工具类

来源:互联网 发布:cad制图网络兼职 编辑:程序博客网 时间:2024/06/01 23:54
  1. import java.lang.reflect.Field;   
  2. import java.lang.reflect.InvocationTargetException;   
  3. import java.lang.reflect.Method;   
  4. import java.util.Collection;   
  5. import java.util.Map;   
  6. import java.util.Set;   
  7.   
  8. /**  
  9.  * 将对象转化为字符串的工具类,适用于对象,简单类型,Collection,Map  
  10.  * 注意:对象的属性必须有相应的get方法  
  11.  * @author plucury  
  12.  *  
  13.  * @version $Id: Obj2StringUtil.java,v 0.1 2009-9-17 下午08:45:31 Exp $  
  14.  */  
  15. public class Obj2StringUtil {   
  16.     /**  
  17.      * 将传入对象转化为String  
  18.      * @param object  
  19.      * @return  
  20.      */  
  21.     @SuppressWarnings( { "unchecked" })   
  22.     public static String toObjString(Object obj) {   
  23.         boolean startFlag = true;   
  24.         StringBuilder sb = new StringBuilder();   
  25.         sb.append("{");   
  26.         Class clz = obj.getClass();   
  27.         Field[] fields = clz.getDeclaredFields();   
  28.         for (Field field : fields) {   
  29.             if (!startFlag) {   
  30.                 sb.append(",");   
  31.             }   
  32.             startFlag = false;   
  33.             Class[] types = new Class[] {};   
  34.             try {   
  35.                 Method m = clz.getMethod(toGetterString(field.getName()), types);   
  36.                 Object value = m.invoke(obj);   
  37.                 sb.append(field.getName());   
  38.                 sb.append(":");   
  39.                 sb.append(Obj2StringUtil.toDistributeString(value));   
  40.             } catch (IllegalAccessException e) {   
  41.                 System.out.println("调用的方法无法访问:" + toGetterString(field.getName()));   
  42.             } catch (IllegalArgumentException e) {   
  43.                 System.out.println("使用了非法的参数:" + toGetterString(field.getName()));   
  44.             } catch (InvocationTargetException e) {   
  45.                 System.out.println("方法异常:" + toGetterString(field.getName()));   
  46.             } catch (NullPointerException e) {   
  47.                 System.out.println(e.getStackTrace());   
  48.             } catch (ExceptionInInitializerError e) {   
  49.                 System.out.println("方法初始化异常:" + toGetterString(field.getName()));   
  50.             } catch (NoSuchMethodException e) {   
  51.                 System.out.println("调用的方法不存在:" + toGetterString(field.getName()));   
  52.             }   
  53.   
  54.         }   
  55.         sb.append("}");   
  56.         return sb.toString();   
  57.     }   
  58.   
  59.     /**  
  60.      * 将传入的Collection转化为String  
  61.      * @param collection  
  62.      * @return  
  63.      */  
  64.     @SuppressWarnings( { "unchecked" })   
  65.     public static String toCollectionString(Collection collection) {   
  66.         boolean startFlag = true;   
  67.         StringBuilder sb = new StringBuilder();   
  68.         sb.append("[");   
  69.         for (Object obj : collection) {   
  70.             if (!startFlag) {   
  71.                 sb.append(",");   
  72.             }   
  73.             startFlag = false;   
  74.             sb.append(Obj2StringUtil.toDistributeString(obj));   
  75.         }   
  76.         sb.append("]");   
  77.         return sb.toString();   
  78.     }   
  79.   
  80.     /**  
  81.      * 将传入的Map转化为String  
  82.      * @param map  
  83.      * @return  
  84.      */  
  85.     @SuppressWarnings( { "unchecked" })   
  86.     public static String toMapString(Map map) {   
  87.         boolean startFlag = true;   
  88.         StringBuilder sb = new StringBuilder();   
  89.         sb.append("[");   
  90.         Set keySet = map.keySet();   
  91.         for (Object obj : keySet) {   
  92.             if (!startFlag) {   
  93.                 sb.append(",");   
  94.             }   
  95.             startFlag = false;   
  96.             sb.append(Obj2StringUtil.toDistributeString(obj));   
  97.             sb.append(":");   
  98.             sb.append(Obj2StringUtil.toDistributeString(map.get(obj)));   
  99.         }   
  100.         sb.append("]");   
  101.         return sb.toString();   
  102.     }   
  103.   
  104.     @SuppressWarnings( { "unchecked" })   
  105.     private static String toDistributeString(Object obj) {   
  106.         if (obj == null) {   
  107.             return "null";   
  108.         } else if (Obj2StringUtil.isBasicObj(obj)) {   
  109.             return obj.toString();   
  110.         } else if (obj instanceof Collection) {   
  111.             return Obj2StringUtil.toCollectionString((Collection) obj);   
  112.         } else if (obj instanceof Map) {   
  113.             return Obj2StringUtil.toMapString((Map) obj);   
  114.         } else {   
  115.             return Obj2StringUtil.toObjString(obj);   
  116.         }   
  117.     }   
  118.   
  119.     private static String toGetterString(String feildName) {   
  120.         String head = feildName.substring(01);   
  121.         String tail = feildName.substring(1);   
  122.         head = head.toUpperCase();   
  123.         return "get" + head + tail;   
  124.     }   
  125.   
  126.     private static boolean isBasicObj(Object obj) {   
  127.         if (obj instanceof Integer) {   
  128.             return true;   
  129.         }   
  130.         if (obj instanceof Long) {   
  131.             return true;   
  132.         }   
  133.         if (obj instanceof Short) {   
  134.             return true;   
  135.         }   
  136.         if (obj instanceof Boolean) {   
  137.             return true;   
  138.         }   
  139.         if (obj instanceof Float) {   
  140.             return true;   
  141.         }   
  142.         if (obj instanceof Double) {   
  143.             return true;   
  144.         }   
  145.         if (obj instanceof String) {   
  146.             return true;   
  147.         }   
  148.         return false;   
  149.     }   
  150. }  
原创粉丝点击