java 反射 將json對象轉換爲實體類

/**
     * 將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;
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章