java 反射 将json对象转换为实体类

来源:互联网 发布:软件租用合同 编辑:程序博客网 时间:2024/05/24 03:37
/**     * 将json对象转换为java对象的工具类     *     * @param entityName     *            类的完全限定名 (例:com.sura.entity.SuraStoreroomAssistStockinfo)     * @param object     *            需要转换的json对象(只可以为JSONObject对象不能使JSONArry对象)     * @return 返回对应的java实体     * @throws ClassNotFoundException     * @throws InstantiationException     * @throws IllegalAccessException     * @throws ParseException     */    public Object getNewObj(String entityName, JSONObject object)            throws ClassNotFoundException, InstantiationException,            IllegalAccessException, ParseException {        Class cl = Class.forName(entityName);        Object obj = cl.newInstance();        Field[] fds = cl.getDeclaredFields();        for (Field fd : fds) {            if (!fd.isAccessible()) {                fd.setAccessible(true);            }            Set<String> setref = object.keySet();            for (String keyref : setref) {                // System.out.println(key);                if (keyref.indexOf(".") != -1) {                    String key = keyref.split("\\.")[1];                    if (fd.getName().equals(key)) {                        String value = object.get(keyref).toString();                        if (fd.getType().equals(Long.class)) {                            if (!value.equals("") && !value.equals("0")) {                                fd.set(obj, Long.parseLong(value));                            }                        } else if (fd.getType().equals(String.class)) {                            fd.set(obj, value);                        } else if (fd.getType().equals(Integer.class)) {                            if (!value.equals("") && !value.equals("0")) {                                fd.set(obj, Integer.parseInt(value));                            }                        } else if (fd.getType().equals(Double.class)) {                            if (!value.equals("") && !value.equals("0")) {                            fd.set(obj, Double.parseDouble(value));                            }                        } else if (fd.getType().equals(Timestamp.class)) {                            if (!value.equals("") && !value.equals("null")) {                                Date zhxhrq = null;                                if (value.indexOf(" ") == -1) {                                    zhxhrq = this.getsdf().parse(                                            value + " 00:00:00");                                } else {                                    zhxhrq = this.getsdf().parse(value);                                }                                fd.set(obj,                                        Timestamp.valueOf(this.getsdf().format(                                                zhxhrq)));                            }                        } else if (fd.getType().equals(Date.class)) {                            if (!value.equals("") && !value.equals("null")) {                                Date zhxhrq = null;                                if (value.indexOf(" ") == -1) {                                    zhxhrq = this.getsdf().parse(                                            value + " 00:00:00");                                    System.out.println(zhxhrq);                                } else {                                    zhxhrq = this.getsdf().parse(value);                                    System.out.println(zhxhrq);                                }                                fd.set(obj, zhxhrq);                            }                        }                    }                } else {                    String key = keyref.trim();                    if (fd.getName().equals(key)) {                        String value = object.get(keyref).toString();                        if (fd.getType().equals(Long.class)) {                            if (!value.equals("") && !value.equals("0")) {                                fd.set(obj, Long.parseLong(value));                            }                        } else if (fd.getType().equals(String.class)) {                            fd.set(obj, value);                        } else if (fd.getType().equals(Integer.class)) {                            if (!value.equals("") && !value.equals("0")) {                                fd.set(obj, Integer.parseInt(value));                            }                        } else if (fd.getType().equals(Double.class)) {                            if (!value.equals("") && !value.equals("0")) {                            fd.set(obj, Double.parseDouble(value));                            }                        } else if (fd.getType().equals(Timestamp.class)) {                            if (!value.equals("") && !value.equals("null")) {                                Date zhxhrq = null;                                if (value.indexOf(" ") == -1) {                                    zhxhrq = this.getsdf().parse(                                            value + " 00:00:00");                                } else {                                    zhxhrq = this.getsdf().parse(value);                                }                                fd.set(obj,                                        Timestamp.valueOf(this.getsdf().format(                                                zhxhrq)));                            }                        } else if (fd.getType().equals(Date.class)) {                            System.out.println(value);                            if (!value.equals("") && !value.equals("null")) {                                Date zhxhrq = null;                                if (value.indexOf(" ") == -1) {                                    zhxhrq = this.getsdf().parse(                                            value + " 00:00:00");                                } else {                                    zhxhrq = this.getsdf().parse(value);                                }                                fd.set(obj, zhxhrq);                            }                        }                    }                }            }        }        return obj;    }


原创粉丝点击