使用JAVA反射机制将简单JAVA been对象、数组转化为对应的Json串

来源:互联网 发布:java随机生成10以内的 编辑:程序博客网 时间:2024/04/28 09:45

rt.
直接上代码:

package doc_02_json;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * 模块说明: 使用java反射机制将javabean对象和对象数组分别转成json字符串 *  */public class ToJson {    // java bean to json    public String objToJson(Object obj) {        StringBuilder build = new StringBuilder();        build.append("{");        @SuppressWarnings("rawtypes")        Class cla = null;        try {            // 反射加载类            cla = Class.forName(obj.getClass().getName());        } catch (ClassNotFoundException e) {            System.out.println(obj.getClass().toString().concat(" 未找到这个类"));            e.printStackTrace();            return null;        }        StringBuffer methodname = new StringBuffer();        // 获取java类的变量        Field[] fields = cla.getDeclaredFields();        String separate = "";        for (Field temp : fields) {            build.append(separate);            build.append("\"");            build.append(temp.getName());            build.append("\":");            methodname.append("get");            methodname.append(temp.getName().substring(0, 1).toUpperCase());            methodname.append(temp.getName().substring(1));            build.append("\"");            Method method = null;            try {                // 获取java的get方法                method = cla.getMethod(methodname.toString());            } catch (NoSuchMethodException | SecurityException e) {                methodname.setLength(0);                e.printStackTrace();            }            try {                // 执行get方法,获取变量参数的直。                build.append(method.invoke(obj));            } catch (IllegalAccessException e) {                e.printStackTrace();            } catch (IllegalArgumentException e) {                e.printStackTrace();            } catch (InvocationTargetException e) {                e.printStackTrace();            }            build.append("\"");            methodname.setLength(0);            separate = ",";        }        build.append("}");        return build.toString();    }    // array to json    public String arrToJson(Object[] objs) {        StringBuilder build = new StringBuilder();        build.append("[");        String separate = "";        for (Object obj : objs) {            build.append(separate);            // object转json字符串            String str = objToJson(obj);            build.append(str);            separate = ",";        }        build.append("]");        return build.toString();    }}

Java bean:

package doc_02_json;/** * 模块说明: java bean *  */public class User {    private int id;    private String name;    private int age;    public User(int id, String name, int age) {        this.id = id;        this.name = name;        this.age = age;    }    public int getId() {        return id;    }    public String getName() {        return name;    }    public int getAge() {        return age;    }    public void setId(int id) {        this.id = id;    }    public void setName(String name) {        this.name = name;    }    public void setAge(int age) {        this.age = age;    }}

测试:

package doc_02_json;/** * 模块说明: 测试 *  */public class Test {    public static void main(String[] args) {        User user1 = new User(1, "zhangsan", 30);        User user2 = new User(2, "lisi", 40);        User user3 = new User(3, "wangwu", 25);        User[] users = { user1, user2, user3 };        ToJson toJson = new ToJson();        System.out.println("将User转化为json:" + toJson.objToJson(user1));        System.out.println("将User[]转化为json:" + toJson.arrToJson(users));    }}

运行结果:
这里写图片描述

end.

0 0