String轉json格式

import  java.lang.reflect.Field;
import  java.lang.reflect.Method;
import  java.util.ArrayList;
import  java.util.List;
import  com.jssh.bean.system.SysMenu;
import  com.jssh.bean.system.SysMenuId;
public  class  JsonUtil<T> {
     /**
      * 將對象集合包裝成JSON格式
      * @param list    對象集合
      * @return    JSON格式字符串
      */
     public   String setList2ToJson(List<T> list){
         StringBuffer msg= new  StringBuffer( "[" );
         for (T obj:list){
             msg.append(setObject2Json(obj));
         }
         msg.deleteCharAt(msg.length()- 1 );
         msg.append( "\n]" );
         return  msg.toString();
     }
     /**
      * 將類對象包裝成JSON格式 : {'name':'a','value':'b'},
      * @param obj
      * @return    JSON格式字符串
      */
     public  String setObject2Json(T obj){
         StringBuffer sb= new  StringBuffer( "\n{'" );
         Field[] fields=obj.getClass().getDeclaredFields();
         for (Field f:fields){
             String fieldName=f.getName();
               
             //成員變量是否序列化
             if (!fieldName.equals( "serialVersionUID" )){
                 Object methodValue=getFieldValue(fieldName, obj);
                 sb.append(fieldName);
                   
                 Class<?> cls=f.getType();
                 /** 判斷該成員變量是否自定義類對象 **/
                 if (!cls.getName().equals( "java.lang.String" ) && !cls.getName().equals( "java.lang.Integer" )
                         && !cls.getName().equals( "java.util.Date" ) && !cls.getName().equals( "long" )){
                     sb.append( "':" );
                     /** 返回對象 **/
                     T o=(T)getFieldValue(f.getName(),obj) ;
                     String str=setObject2Json(o);
                     sb.append(str);
                     sb.append( "\n'" );
                 } else {
                     sb.append( "':'" );
                     sb.append(methodValue.toString());
                     sb.append( "',\n'" );      
                 }  
             }  
         }
         sb.delete(sb.length()- 4 ,sb.length()- 1 );
         sb.append( "}," );
         return  sb.toString();
     }
     /**
      * 獲取類全部屬性名
      * @param obj 對象
      * @return    屬性數組
      */
     public  String[] getFieldNames(T obj){
         Field[] fields=obj.getClass().getDeclaredFields();
         String[] fnames= new  String[fields.length];
         for ( int  i= 0 ;i<fnames.length;i++){
             fnames[i]=fields[i].getName();
         }
         return  fnames;
     }
     /**
      * 獲取屬性返回值
      * @param methodName  
      * @param t
      * @return
      */
     public  Object getFieldValue(String fieldName,T obj){
         /** 獲得類屬性值 **/
         Object methodValue= null ;
         /** 組織GET方法名 **/
         String methodName= "get" +fieldName.substring( 0 1 ).toUpperCase()+fieldName.substring( 1 );
         try  {
             Method method=obj.getClass().getMethod(methodName,  null );
             methodValue=(Object) method.invoke(obj,  null );
             if (methodValue== null ) methodValue= "" ;
         } catch (Exception e){
             e.printStackTrace();
         }
         return  methodValue;
     }
       
     public  static  void  main(String[] args) {
         SysMenu menu= new  SysMenu();
         menu.setIcon( "icon" );
           
         SysMenuId id= new  SysMenuId();
         id.setMenuModule( "oooooooooooooooooooo" );
         id.setMenuPrivilege( "~~~~~~~~~~~~~~~~~~~~~~~~~" );
         menu.setId(id);
         menu.setMenuName( "xxxxxxxxxxxxxxxxxxxxxxx" );
           
         SysMenu menu2= new  SysMenu();
         menu2.setIcon( "icon" );
           
         SysMenuId id2= new  SysMenuId();
         id2.setMenuModule( "oooooooooooooooooooo" );
         id2.setMenuPrivilege( "~~~~~~~~~~~~~~~~~~~~~~~~~" );
         menu2.setId(id2);
         menu2.setMenuName( "xxxxxxxxxxxxxxxxxxxxxxx" );
           
         List<SysMenu> list= new  ArrayList<SysMenu>();
         list.add(menu);
         list.add(menu2);
           
         String str= new  JsonUtil<SysMenu>().setList2ToJson(list);
         System.out.println(str);
     }
}
相關文章
相關標籤/搜索