反射机制 自己设计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]