hwpok 发表于 2013-1-23 02:11:14

反射机制 自己设计ajax的json工具 练习

<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee;">http://www.blogjava.net/Images/OutliningIndicators/None.gifimport java.lang.reflect.*;
http://www.blogjava.net/Images/OutliningIndicators/None.gifimport java.util.*;
http://www.blogjava.net/Images/OutliningIndicators/None.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif/** *//**
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif * @author   惠万鹏
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif * @time     2008-06-13
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif * @version  1.0
http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif */
http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gifpublic class JSON http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    /** *//**
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * <p>
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * 本方法用利用反射机制根据对像的域名获得PO的getter方法名
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * </p>
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * 
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @param o
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     *            :po对像
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @return getter方法名
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif     */
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    private synchronized static String[][] gFMs(Object o) http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        String[][] fms = null;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        if (o != null)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif        http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            Field flist[] = o.getClass().getDeclaredFields();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            fms = new String[2];
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            for (int i = 0; i < flist.length; i++) 
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif            http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                fms = JSON.assemblyFM(flist.toString());
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif            }
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        return fms;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    /** *//**
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * <p>
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * 根据域名组装域名和方法名
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * </p>
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * 
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @param sfield
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @return
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif     */
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif    private synchronized static String[] assemblyFM(String sfield)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        String[] fm = new String[2];
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        int len = sfield.length();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        int pointAt = sfield.lastIndexOf(".") + 1;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        fm[0] = sfield.substring(pointAt, len);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        fm[1] = String.valueOf(fm[0].charAt(0)).toUpperCase();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        if (fm[0].length() > 1) 
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif        http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            fm[1] += fm[0].substring(1, fm[0].length());
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        if (sfield.indexOf("boolean") > 0)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif        http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            fm[1] = "is" + fm[1];
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        } 
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        else 
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif        http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            fm[1] = "get" + fm[1];
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        fm[1] += "()";
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        return fm;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif    
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    /** *//**
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * <p>po的方法里是否含有域的getter方法</p>
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @param fms
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @param method
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @return
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif     */
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif    private static String getFN(String[][] fms, String method)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        if(fms != null)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif        http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            int len = method.length();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            int pointAt = method.lastIndexOf(".") + 1;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            String methodName = method.substring(pointAt, len);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            for(int i = 0; i < fms.length; i++)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif            http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                if(methodName.equals(fms[1]))
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif                http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    return fms[0];
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif                }
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif            }
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        return "";
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    /** *//**
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * <p>得到单个po的json info</p>
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @param o
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @return
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif     */
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    private static String getJsonInfo(Object o) http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        StringBuffer jsonInfo = new StringBuffer("{");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        String[][] fms = JSON.gFMs(o);
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif        if(fms != null)http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            String fn = "";
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            String fv = "";
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            Method[] methods = o.getClass().getDeclaredMethods();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            for(int i = 0; i < methods.length; i++)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif            http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                fn = JSON.getFN(fms,methods.toString());
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                if(fn != null && !fn.equals(""))
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif                http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    jsonInfo.append("\"");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    jsonInfo.append(fn);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    jsonInfo.append("\"");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    jsonInfo.append(":");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    jsonInfo.append("\"");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    try
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif                    http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                        fv = (String) methods.invoke(o, (Object[])null);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                        fv = fv == null ? "" : fv;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                        jsonInfo.append(fv);
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif                    }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    catch(Exception e)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif                    http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                        jsonInfo.append("");
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif                    }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    jsonInfo.append("\",");
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif                }
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif            }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        int len = jsonInfo.length();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        String strEnd = jsonInfo.substring(len - 1, len);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        if(strEnd != null && strEnd.equals(","))
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif        http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            jsonInfo.delete(len - 1, len);
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        jsonInfo.append("}");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        return jsonInfo.toString();
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif    
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    /** *//**
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * <p>得到一个集合的json信息</p>
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @param list
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif     * @return
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif     */
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    public static String getJsonInfos(List<Object> list)http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        StringBuffer infos = new StringBuffer();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        infos.append("[");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        if(list != null)
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif        http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            Iterator<Object> itObj = list.iterator();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif            while(itObj.hasNext())
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif            http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                infos.append(JSON.getJsonInfo(itObj.next()));
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                if(itObj.hasNext())
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif                http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif                    infos.append(",");
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif                }
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif            }
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif        }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        infos.append("]");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        return infos.toString();
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif    public static void main(String[] args) http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        List<Object> list = new ArrayList<Object>();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        PersonPO po = new PersonPO();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        po.setAge("25");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        po.setName("惠万鹏");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        po.setSex("男");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        list.add(po);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        po = new PersonPO();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        po.setAge("27");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        po.setName("惠帆");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        po.setSex("女");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        list.add(po);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif        System.out.println(JSON.getJsonInfos(list));
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif    }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif}
页: [1]
查看完整版本: 反射机制 自己设计ajax的json工具 练习