`
hwpok
  • 浏览: 251862 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java reflect ajax json tool

    博客分类:
  • 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));
    }

}
分享到:
评论

相关推荐

    Java reflect 机制详解

    免费共享,很详细的介绍了反射机制的原理,适合追根究底的java学习者

    JavaReflect

    在Java中,反射主要涉及到`java.lang.Class`类、`java.lang.reflect`包中的`Constructor`、`Method`和`Field`等类。通过反射,我们可以动态地获取类的信息(如类名、属性、方法),甚至可以在运行时创建和调用类的...

    java reflect

    ### Java反射机制详解 #### 一、引言 在Java编程语言中,反射(Reflection)是一种强大的工具,它允许程序在运行时访问类的信息并操纵类的对象。这种能力为Java程序提供了灵活性,使得代码能够在不知道具体类型的...

    Java反射函数机制实现List转换Json

    本话题将深入探讨如何利用Java反射机制将List对象转换为JSON格式。 在Java中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在处理数据传输或存储...

    JSON与Java互相转换Demo(Eclipse)

    import java.lang.reflect.Type; import com.google.gson.Gson; public class JsonUtil { // 使用org.json库将Java对象转换为JSON字符串 public static String toJSONString(Object obj) { return new ...

    java反射JAVA REFLECT (java 反射)

    JAVA REFLECT (java 反射) 取得类的继承结构 - 类所在的包; |- public Package getPackage() - 类的声明方式; |-取得全类名:public String getName() |-只取类名: public String getSimpleName() - 类所继承...

    java教程ppt,讲述了java reflect.,对大家应该很有帮助

    Java反射机制是Java编程语言中的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本教程中,我们将深入...请参考`java_base10_reflect.ppt`来深入学习这一强大而复杂的主题。

    JAVA_Reflect

    4. 动态代理:Java的`java.lang.reflect.Proxy`类可以生成动态代理类,实现接口的动态方法调用。 总的来说,Java反射为开发者提供了一种强大的工具,使我们能够在运行时探索和操纵类的结构和行为,极大地扩展了Java...

    java反射实现Object转json

    import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; public class ReflectionToJson { public static String objectToJson(Object obj) throws Exception { Class&lt;?&gt; clazz = obj...

    拷贝JSON对象值进Java Bean对象

    import java.lang.reflect.Method; public class JsonUtil { public static &lt;T&gt; T jsonToObject(JSONObject json, Class&lt;T&gt; clazz) throws Exception { T instance = clazz.newInstance(); for (String key : ...

    Json处理工具类

    - `java.lang.reflect.Type`: 用于类型反射。 - `java.net.URLDecoder`: 提供了URL解码功能。 - `java.sql.Date`: SQL日期处理。 - `java.text.ParseException`: 解析异常处理。 - `java.text.SimpleDateFormat`: ...

    Json字段过滤器

    import java.lang.reflect.Field; public class JsonFilterSerializer extends StdSerializer&lt;Object&gt; { public JsonFilterSerializer() { this(null); } public JsonFilterSerializer(Class&lt;Object&gt; t) { ...

    java reflect utils

    Java反射(Reflect)是Java语言的一个重要特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。`java reflect utils`通常是指一些工具类或库,用于简化和增强Java反射机制的使用。在Java...

    cpp-reflect在C17中轻松实现反射和序列化

    在这个主题中,我们可能会看到如何定义元数据,以及如何利用这些数据进行序列化,即把对象的状态转换为可存储或传输的形式,如JSON或XML。 C++17虽然没有正式的反射库,但可以通过模板元编程和一些技巧来模拟反射。...

    scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetExcep

    标题中的问题“scrcpy投屏 AssertionError: java.lang.reflect.InvocationTargetException”是用户在尝试使用Scrcpy时遇到的一个常见错误。这个错误通常意味着在执行某个方法时,Java运行时环境遇到了未预期的情况。...

    一种简单的json解析方法

    本篇文章将介绍一种基于Java的基本JSON解析方法,通过提供的`JsonUtil.java`、`BeanUtil.java`和`AjaxResponse.java`三个文件,我们可以看到如何实现这一功能。 `JsonUtil.java`文件很可能是包含解析和序列化JSON的...

    Java Reflect

    Java反射是Java编程语言中的一个强大特性,它允许在运行时检查类、接口、字段和方法的信息,并且能够在运行时动态地创建对象和调用方法。这个特性使得Java具有高度的灵活性和动态性,但同时也增加了程序的复杂性和...

    java中的反射reflect

    Java中的反射(Reflect)是Java语言的一个重要特性,它允许运行时访问类的信息,包括类名、属性、方法等,并可以动态地创建对象和调用方法。反射在很多场景下非常有用,比如在框架开发、插件系统、元数据驱动编程等...

Global site tag (gtag.js) - Google Analytics