java reflect ajax json tool

<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> package  myp;

import  java.lang.reflect. * ;
import  java.util. * ;

/**
 * 
@author    惠万鹏
 * @time     2008-06-13
 * 
@version   1.0
 
*/
public   class  JSON {
    
/**
     * <p>
     * 本方法用利用反射机制根据对像的域名获得PO的getter方法名
     * </p>
     * 
     * 
@param  o
     *            :po对像
     * 
@return  getter方法名
     
*/
    
private   synchronized   static  String[][] gFMs(Object o) {
        String[][] fms 
=   null ;
        
if  (o  !=   null )
        {
            Field flist[] 
=  o.getClass().getDeclaredFields();
            fms 
=   new  String[flist.length][ 2 ];
            
for  ( int  i  =   0 ; i  <  flist.length; i ++
            {
                fms[i] 
=  JSON.assemblyFM(flist[i].toString());
            }
        }
        
return  fms;
    }

    
/**
     * <p>
     * 根据域名组装域名和方法名
     * </p>
     * 
     * 
@param  sfield
     * 
@return
     
*/
    
private   synchronized   static  String[] assemblyFM(String sfield)
    {
        String[] fm 
=   new  String[ 2 ];
        
int  len  =  sfield.length();
        
int  pointAt  =  sfield.lastIndexOf( " . " +   1 ;
        
        fm[
0 =  sfield.substring(pointAt, len);
        fm[
1 =  String.valueOf(fm[ 0 ].charAt( 0 )).toUpperCase();
        
        
if  (fm[ 0 ].length()  >   1
        {
            fm[
1 +=  fm[ 0 ].substring( 1 , fm[ 0 ].length());
        }
        
if  (sfield.indexOf( " boolean " >   0 )
        {
            fm[
1 =   " is "   +  fm[ 1 ];
        } 
        
else  
        {
            fm[
1 =   " get "   +  fm[ 1 ];
        }
        fm[
1 +=   " () " ;
        
return  fm;
    }
    
    
/**
     * <p>po的方法里是否含有域的getter方法</p>
     * 
@param  fms
     * 
@param  method
     * 
@return
     
*/
    
private   static  String getFN(String[][] fms, String method)
    {
        
if (fms  !=   null )
        {
            
int  len  =  method.length();
            
int  pointAt  =  method.lastIndexOf( " . " +   1 ;
            String methodName 
=  method.substring(pointAt, len);
            
for ( int  i  =   0 ; i  <  fms.length; i ++ )
            {
                
if (methodName.equals(fms[i][ 1 ]))
                {
                    
return  fms[i][ 0 ];
                }
            }
        }
        
return   "" ;
    }

    
/**
     * <p>得到单个po的json info</p>
     * 
@param  o
     * 
@return
     
*/
    
private   static  String getJsonInfo(Object o) {
        StringBuffer jsonInfo 
=   new  StringBuffer( " { " );
        String[][] fms 
=  JSON.gFMs(o);
        
if (fms  !=   null ){
            String fn 
=   "" ;
            String fv 
=   "" ;
            Method[] methods 
=  o.getClass().getDeclaredMethods();
            
for ( int  i  =   0 ; i  <  methods.length; i ++ )
            {
                fn 
=  JSON.getFN(fms,methods[i].toString());
                
if (fn  !=   null   &&   ! fn.equals( "" ))
                {
                    jsonInfo.append(
" \ "" );
                    jsonInfo.append(fn);
                    jsonInfo.append(
" \ "" );
                    jsonInfo.append( " : " );
                    jsonInfo.append(
" \ "" );
                     try
                    {
                        fv 
=  String.valueOf(methods[i].invoke(o, (Object[]) null ));
                        fv 
=  fv.equals( " null " ?   ""  : fv;
                        jsonInfo.append(fv);
                    }
                    
catch (Exception e)
                    {
                        jsonInfo.append(
"" );
                    }
                    jsonInfo.append(
" \ " , " );
                }
            }
            
        }
        
int  len  =  jsonInfo.length();
        String strEnd 
=  jsonInfo.substring(len  -   1 , len);
        
if (strEnd  !=   null   &&  strEnd.equals( " , " ))
        {
            jsonInfo.delete(len 
-   1 , len);
        }
        jsonInfo.append(
" } " );
        
return  jsonInfo.toString();
    }
    
    
/**
     * <p>得到一个集合的json信息</p>
     * 
@param  list
     * 
@return
     
*/
    
public   static  String getJsonInfos(List < Object >  list){
        StringBuffer infos 
=   new  StringBuffer();
        infos.append(
" {[ " );
        
if (list  !=   null )
        {
            Iterator
< Object >  itObj  =  list.iterator();
            
while (itObj.hasNext())
            {
                infos.append(JSON.getJsonInfo(itObj.next()));
                
if (itObj.hasNext())
                {
                    infos.append(
" , " );
                }
            }
        }
        infos.append(
" ]} " );
        
return  infos.toString();
    }
    
public   static   void  main(String[] args) {
        List
< Object >  list  =   new  ArrayList < Object > ();
        
        PersonPO po 
=   new  PersonPO();
        po.setAge(
" 25 " );
        
// po.setName("惠万鹏");
        po.setSex( " " );
        po.setParty(
true );
        list.add(po);
        
        po 
=   new  PersonPO();
        po.setAge(
" 27 " );
        po.setName(
" 惠帆 " );
        po.setSex(
" " );
        po.setParty(
false );
        list.add(po);
        
        System.out.println(JSON.getJsonInfos(list));
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值