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

本文通过示例代码展示了如何利用Java的反射机制将Java Bean对象和数组转化成对应的JSON字符串,涉及Java序列化过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值