Java反射实现JSON与JavaBean之间的转换

来源:互联网 发布:践行五大发展理念 知乎 编辑:程序博客网 时间:2024/05/18 01:51

        项目中需要将Websocket服务器传来的JSON字符串解析并存入数据库,该JSON字符串是与系统中的实体一一对应的,如果要单独解析会十分麻烦,而且一大段代码很不美观,于是写了一个小工具方法,自动将JSON转换为对应的JavaBean。

下面上代码:


    /**     * 将JSON转换为对应的JavaBean     * @param jsonObject 需要转换的JSON对象     * @param t 需要转换的JavaBean     * @param <T> 泛型     * @return 返回转换后的JavaBean     * @throws IllegalAccessException 抛出IllegalAccessException异常     */    public static <T extends Object> T jsonToObject(JSONObject jsonObject,T t) throws IllegalAccessException {        // 反射获取该JavaBean所有的属性        Field[] fields = t.getClass().getDeclaredFields();        // 遍历所有属性        for (Field field:fields) {            // 如果该属性对应了JSON中的某个值,则对JavaBean进行赋值            if (jsonObject.get(field.getName()) != null) {                // 将JavaBean属性的Accessible设为True,避免Private属性无法读取                field.setAccessible(true);                // 对相应属性进行赋值                if (field.getType() == java.util.Date.class) {                    field.set(t,new Date(Long.parseLong(jsonObject.get(field.getName()).toString())));                } else if (field.getType() == java.lang.Byte.class) {                    field.set(t,Byte.parseByte(jsonObject.get(field.getName()).toString()));                } else {                    field.set(t,jsonObject.get(field.getName()));                }            }        }        // 返回转换后的JavaBean        return t;    }




1 0
原创粉丝点击